二七王:明牌、提示、准备 handler
明牌数据进 GameState(面板可反复开关查看);提示不进——它是一次性通知、 不是对局状态,重连也不重放,存下来只会变成幽灵数据,故只随事件带出。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
// 明牌 / 提示 / 准备 handler
|
||||
const { load } = require('./_load');
|
||||
const t = require('./_assert')();
|
||||
|
||||
load('client/js/gameabc-framework/system/EventBus.js');
|
||||
load('client/js/01_SubGame/codes/state/Events.js');
|
||||
load('client/js/01_SubGame/codes/state/GameState.js');
|
||||
load('client/js/01_SubGame/codes/net/handlers/QueryHandler.js');
|
||||
load('client/js/01_SubGame/codes/net/handlers/ReadyHandler.js');
|
||||
|
||||
const S = EQW_GameState;
|
||||
const payloads = [];
|
||||
EventBus.on(EQW_Events.EQW_TIP, d => payloads.push(d));
|
||||
const evts = [];
|
||||
Object.keys(EQW_Events).forEach(k => EventBus.on(EQW_Events[k], () => evts.push(k)));
|
||||
|
||||
// ================= mingpai =================
|
||||
S.reset(); evts.length = 0;
|
||||
EQW_QueryHandler.handleMingpai({ success: true, seat: 1,
|
||||
others: [{ seat: 0, zhucards: [52, 2] }, { seat: 2, zhucards: [53, 15] }] });
|
||||
t.eq('明牌数据入状态', S.table.mingpai,
|
||||
[{ seat: 0, zhucards: [52, 2] }, { seat: 2, zhucards: [53, 15] }]);
|
||||
t.eq('明牌发事件', evts.indexOf('EQW_MINGPAI') >= 0, true);
|
||||
|
||||
// ================= tishi =================
|
||||
// 提示是一次性的,不进 GameState,只随事件带出去
|
||||
S.reset(); payloads.length = 0; evts.length = 0;
|
||||
const before = S.snapshot(); // 处理前的状态快照
|
||||
EQW_QueryHandler.handleTishi({ success: true, seat: 2, tip: 1 });
|
||||
t.eq('提示发事件', evts.indexOf('EQW_TIP') >= 0, true);
|
||||
t.eq('提示内容随事件带出', payloads, [{ seat: 2, tip: 1 }]);
|
||||
t.eq('提示未改动 GameState 任何字段', S.snapshot(), before);
|
||||
|
||||
// ================= zhunbei =================
|
||||
S.reset(); evts.length = 0;
|
||||
EQW_ReadyHandler.handle({ success: true, seat: 1 });
|
||||
t.eq('准备发事件', evts.indexOf('EQW_READY_CHANGED') >= 0, true);
|
||||
|
||||
// ================= 缺必需字段 =================
|
||||
S.reset();
|
||||
EQW_QueryHandler.handleMingpai({ success: true }); //缺 others
|
||||
t.eq('明牌缺 others 时不写', S.table.mingpai, null);
|
||||
payloads.length = 0;
|
||||
EQW_QueryHandler.handleTishi({ success: true, seat: 0 }); //缺 tip
|
||||
t.eq('提示缺 tip 时不发事件', payloads, []);
|
||||
|
||||
process.exit(t.done('handlers_query') ? 0 : 1);
|
||||
Reference in New Issue
Block a user