/////////////////////////////////////////////////////////////// ////////// EQW_MainHandler: 选主(xuanzhu)/////////////////// /////////////////////////////////////////////////////////////// // 协议 §7:banker 庄家 / flower 主牌花色(1方块 2梅花 3红心 4黑桃) / // step 阶段(=3 埋牌) / nextseat 控制权(=庄家,埋牌由庄家做) / // countdown 埋牌倒计时 / cards 选主后自己手上的牌 // // 【step 与 nextseat 只读包字段】曾经这里写死 step=3 且 turn.seat = aset.banker: // 阶段与「埋牌 = 庄家」两条规则都被搬到了前端(前端红线「数据驱动、前端无对局状态机」)。 // // 选主后正 2 / 正 7 升格、主花色普通牌并入主牌段(design §3),手牌需整体重排—— // 但【重排是渲染时的事】,由 core/CardOrder 现算,不在这里落地成状态。 // // 投降(touxiang)没有成功推送:点投降后服务端直接结算,前端收到的是 jiesuan。 // 失败时才回一个同名的 touxiang 失败包,由 FailHandler 统一处理。 var EQW_MainHandler = EQW_MainHandler || { handleXuanzhu: function (data) { if (!data.hasOwnProperty('flower')) { console.error('[EQW_MainHandler] xuanzhu 缺 flower,已跳过该包'); return; } EQW_GameState._apply(EQW_GameState.aset, data, { banker: 'banker', flower: 'flower', step: 'step' }); EQW_GameState._apply(EQW_GameState.my, data, { cards: 'cards' }); EQW_GameState._apply(EQW_GameState.turn, data, { seat: 'nextseat', countdown: 'countdown' }); EventBus.emit(EQW_Events.EQW_MAIN_SET); if (data.hasOwnProperty('cards')) { EventBus.emit(EQW_Events.EQW_HAND_CHANGED); } EventBus.emit(EQW_Events.EQW_TURN_CHANGED); } };