SubGameHooks 只解包转交、不写业务:_ReceiveData 收到的是完整包, 按 rpc 分发;Free 的参数是平台已取出的 deskfree、可能为 null; appStart 只记座位与房间选项,UI 初始化留给 C 阶段。 index.html 里 handler 排在 Dispatcher 之前——后者注册时要引用全部 handler。 另加 test_index_load_order.js:按 index.html 实际 script 顺序自动加载 codes/ 全部文件 + 3 个框架依赖,验证顺序无遗漏、无环,并断言 EQW_Dispatcher 路由表确已注册,作为长期守卫。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
54 lines
2.0 KiB
JavaScript
54 lines
2.0 KiB
JavaScript
// SubGameHooks 接线:平台入口 → 新架构
|
||
const { load } = require('./_load');
|
||
const t = require('./_assert')();
|
||
|
||
global.window = global; // 转发壳用 window.SubGameHooks 判定
|
||
|
||
load('client/js/gameabc-framework/system/EventBus.js');
|
||
load('client/js/gameabc-framework/system/SpriteEventController.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/state/RoomOptions.js');
|
||
['DealHandler','CallHandler','MainHandler','BuryHandler','PlayHandler',
|
||
'QueryHandler','ReadyHandler','ResultHandler','ResyncHandler','FailHandler']
|
||
.forEach(h => load('client/js/01_SubGame/codes/net/handlers/' + h + '.js'));
|
||
load('client/js/01_SubGame/codes/net/Dispatcher.js');
|
||
load('client/js/01_SubGame/codes/SubGameHooks.js');
|
||
|
||
const S = EQW_GameState;
|
||
|
||
// ---- _ReceiveData:完整包 → 分发 ----
|
||
S.reset(); S.room.mySeat = 0;
|
||
SubGameHooks._ReceiveData({ app: 'youle', route: 'erqiwang', rpc: 'fapai',
|
||
data: { success: true, asetidx: 1, asetcount: 6,
|
||
cards: [1,2], seat: 0, countdown: 15 } });
|
||
t.eq('_ReceiveData 分发到 handler', S.my.cards, [1,2]);
|
||
|
||
// ---- setRoomDes ----
|
||
SubGameHooks.setRoomDes(123, 12, '00010');
|
||
t.eq('setRoomDes 解析选项', S.room.options.climb, 1);
|
||
|
||
// ---- Free:null 不崩 ----
|
||
let boom = false;
|
||
try { SubGameHooks.Free(null); } catch (e) { boom = true; }
|
||
t.eq('Free(null) 不崩', boom, false);
|
||
|
||
// ---- Reconnect ----
|
||
S.reset(); S.room.mySeat = 1;
|
||
SubGameHooks.Reconnect({ count: 6, idx: 3, PlayerInfo: [0,0,0], step: 1, MyCards: [5,6] });
|
||
t.eq('Reconnect 填状态', S.my.cards, [5,6]);
|
||
t.eq('Reconnect 填局数', S.room.asetIdx, 3);
|
||
|
||
// ---- 畸形入参一律不崩 ----
|
||
boom = false;
|
||
try {
|
||
SubGameHooks._ReceiveData(null);
|
||
SubGameHooks._ReceiveData({});
|
||
SubGameHooks.StartWar(null);
|
||
SubGameHooks.Reconnect(null);
|
||
SubGameHooks.setRoomDes();
|
||
} catch (e) { boom = true; }
|
||
t.eq('畸形入参不崩', boom, false);
|
||
|
||
process.exit(t.done('hooks') ? 0 : 1);
|