Files
erqiwang_youle/client/js/01_SubGame/codes/state/Events.js
T
joywayerandClaude Opus 5 4e79f135ce 二七王:前端事件常量与 GameState 骨架
GameState 是服务端快照的镜像、前端 SSOT:只镜像不派生、字段名对齐协议、
缺字段不兜底。reset 清对局态但保留 mySeat 与 options(跨局不变)。
事件只带「发生了什么」,数据由订阅者从 GameState 读,避免同一份数据两处存。

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

38 lines
2.0 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_Events: 玩法事件常量 ///////////////////////////
///////////////////////////////////////////////////////////////
// 前端红线:框架保持游戏中立,玩法专属事件由子游戏追加到 EventBus.Events。
//
// 【事件只带「发生了什么」,不带数据】——订阅者从 EQW_GameState 读。
// 这样同一份数据不会在事件载荷与状态里各存一份(SSOT)。
// 唯一例外是 EQW_RPC_FAILED,它带 {rpc, errcode}:那是一次性的错误信息,
// 不属于对局状态、不该进 GameState。
var EQW_Events = EQW_Events || {
EQW_RESET: 'eqw.reset', //新一局发牌,全部清场
EQW_HAND_CHANGED: 'eqw.hand_changed', //自己手牌变化
EQW_CALL_CHANGED: 'eqw.call_changed', //叫分推进
EQW_BANKER_SET: 'eqw.banker_set', //上庄
EQW_MAIN_SET: 'eqw.main_set', //选主
EQW_BURY_DONE: 'eqw.bury_done', //埋牌完成
EQW_CARD_PLAYED: 'eqw.card_played', //有人出牌
EQW_TRICK_END: 'eqw.trick_end', //一轮结束(chupai3 带 maxseat)
EQW_TURN_CHANGED: 'eqw.turn_changed', //控制权或倒计时变化
EQW_MINGPAI: 'eqw.mingpai', //收到明牌数据
EQW_TIP: 'eqw.tip', //收到对家提示
EQW_ASET_RESULT: 'eqw.aset_result', //小局结算
EQW_ACCOUNT_RESULT: 'eqw.account_result', //大局/解散结算
EQW_READY_CHANGED: 'eqw.ready_changed', //有人准备
EQW_RESYNC_ALL: 'eqw.resync_all', //重连/开局全量重画
EQW_RPC_FAILED: 'eqw.rpc_failed' //失败回包 {rpc, errcode}
};
//追加到框架事件总线的事件表(框架不认识玩法事件,由子游戏注册)
if (typeof EventBus !== 'undefined' && EventBus.Events) {
for (var _eqwEvtKey in EQW_Events) {
if (EQW_Events.hasOwnProperty(_eqwEvtKey)) {
EventBus.Events[_eqwEvtKey] = EQW_Events[_eqwEvtKey];
}
}
}