Files
erqiwang_youle/client/js/01_SubGame/codes/net/handlers/DealHandler.js
T
joywayerandClaude Opus 5 081130b020 二七王:发牌与叫分 handler
fapai 是一局起点,先 reset 清上局残留(保留 mySeat 与 options)。
叫分里 0(不叫)与 null(还没叫)严格区分。上庄的 bottomcards/cards 只有庄家有,
缺字段时保持原值、不抹掉闲家已有手牌——GameState 的「缺字段不兜底」在此体现。

新增 GameState._apply 助手:按 {目标键:源键} 映射写入,源键不存在就不写。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 17:41:09 +08:00

34 lines
1.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
///////////////////////////////////////////////////////////////
////////// EQW_DealHandler: 发牌(fapai)//////////////////////
///////////////////////////////////////////////////////////////
// 协议 §1:asetidx 当前局数 / asetcount 总局数 / cards 自己的 28 张 /
// seat 当前等待叫分者 / countdown 叫分倒计时
//
// fapai 是一局的起点,先 reset 清掉上一局的残留(reset 保留 mySeat 与 options)。
var EQW_DealHandler = EQW_DealHandler || {
handle: function (data) {
if (!data.hasOwnProperty('cards')) {
console.error('[EQW_DealHandler] fapai 缺 cards,已跳过该包');
return;
}
EQW_GameState.reset();
EQW_GameState._apply(EQW_GameState.room, data, {
asetIdx: 'asetidx',
asetCount: 'asetcount'
});
EQW_GameState._apply(EQW_GameState.my, data, { cards: 'cards' });
EQW_GameState._apply(EQW_GameState.turn, data, {
seat: 'seat',
countdown: 'countdown'
});
EQW_GameState.aset.step = 1; //发完牌进入叫分阶段
EventBus.emit(EQW_Events.EQW_RESET);
EventBus.emit(EQW_Events.EQW_HAND_CHANGED);
EventBus.emit(EQW_Events.EQW_TURN_CHANGED);
}
};