二七王:接通平台精灵事件链路(SubGameHooks → SpriteEventController)
SubGameHooks 原是空骨架,Game_Modify.* → SubGameHooks.* → SpriteEventController 这条链是断的:不仅数字叠绘的绘制回调不会触发,转发壳里已注册的 13 号战绩按钮、 150 号帮助按钮、248 号协议勾选也收不到事件。 实现 utlmousedown / utlmousedown_nomove / mouseup / utlmousemove / utlgamemydrawbegin / gamemydraw 六个 hook,只做转发、不写业务逻辑, 参数顺序逐个对齐 SpriteEventController.handleXxx 的签名(错位会让事件静默失效), 转发前判断依赖存在,防御风格与转发壳一致。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,23 +38,54 @@ var SubGameHooks = window.SubGameHooks || {};
|
|||||||
|
|
||||||
// ===== Game_Modify.*(事件/交互,来自 01,9) =====
|
// ===== Game_Modify.*(事件/交互,来自 01,9) =====
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// 精灵交互 6 件套:【只做转发,不写任何业务逻辑】
|
||||||
|
//
|
||||||
|
// 平台事件到达框架的完整链路:
|
||||||
|
// 引擎 → Game_Modify.xxx(01 转发壳) → SubGameHooks.xxx(本文件) → SpriteEventController.handleXxx
|
||||||
|
// → 按精灵 ID 分发到各 UI 组件注册的 handler
|
||||||
|
//
|
||||||
|
// 这一段接不上,整条链就是断的:不仅数字叠绘(NumberRenderer 的绘制回调)不会被触发,
|
||||||
|
// 连转发壳里已注册的 13 号战绩按钮、150 号帮助按钮、248 号协议勾选也收不到事件。
|
||||||
|
// 参数顺序必须与 SpriteEventController.handleXxx 的签名逐个对齐——错位会让事件【静默失效】。
|
||||||
|
// 防御风格与转发壳一致:先判断依赖存在再转发。
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
// [A] utlmousedown(gameid, spid, downx, downy, no1, no2, no3, no4, no5, no6):精灵按下事件;子游戏转发到 SpriteEventController。
|
// [A] utlmousedown(gameid, spid, downx, downy, no1, no2, no3, no4, no5, no6):精灵按下事件;子游戏转发到 SpriteEventController。
|
||||||
// SubGameHooks.utlmousedown = function (gameid, spid, downx, downy, no1, no2, no3, no4, no5, no6) { /* ... */ };
|
SubGameHooks.utlmousedown = function (gameid, spid, downx, downy, no1, no2, no3, no4, no5, no6) {
|
||||||
|
if (typeof SpriteEventController === 'undefined') { return; }
|
||||||
|
return SpriteEventController.handleMouseDown(gameid, spid, downx, downy, no1, no2, no3, no4, no5, no6);
|
||||||
|
};
|
||||||
|
|
||||||
// [A] utlmousedown_nomove(gameid, spid, downx, downy, timelong, no1, no2, no3, no4, no5):精灵按下(无移动)事件。
|
// [A] utlmousedown_nomove(gameid, spid, downx, downy, timelong, no1, no2, no3, no4, no5):精灵按下(无移动)事件。
|
||||||
// SubGameHooks.utlmousedown_nomove = function (gameid, spid, downx, downy, timelong, no1, no2, no3, no4, no5) { /* ... */ };
|
SubGameHooks.utlmousedown_nomove = function (gameid, spid, downx, downy, timelong, no1, no2, no3, no4, no5) {
|
||||||
|
if (typeof SpriteEventController === 'undefined') { return; }
|
||||||
|
return SpriteEventController.handleMouseDownNoMove(gameid, spid, downx, downy, timelong, no1, no2, no3, no4, no5);
|
||||||
|
};
|
||||||
|
|
||||||
// [A] mouseup(gameid, spid_down, downx, downy, spid_up, upx, upy, timelong, no1, no2):精灵抬起事件。
|
// [A] mouseup(gameid, spid_down, downx, downy, spid_up, upx, upy, timelong, no1, no2):精灵抬起事件。
|
||||||
// SubGameHooks.mouseup = function (gameid, spid_down, downx, downy, spid_up, upx, upy, timelong, no1, no2) { /* ... */ };
|
SubGameHooks.mouseup = function (gameid, spid_down, downx, downy, spid_up, upx, upy, timelong, no1, no2) {
|
||||||
|
if (typeof SpriteEventController === 'undefined') { return; }
|
||||||
|
return SpriteEventController.handleMouseUp(gameid, spid_down, downx, downy, spid_up, upx, upy, timelong, no1, no2);
|
||||||
|
};
|
||||||
|
|
||||||
// [A] utlmousemove(gameid, spid, downx, downy, movex, movey, timelong, offmovex, offmovey, no1):精灵移动事件。
|
// [A] utlmousemove(gameid, spid, downx, downy, movex, movey, timelong, offmovex, offmovey, no1):精灵移动事件。
|
||||||
// SubGameHooks.utlmousemove = function (gameid, spid, downx, downy, movex, movey, timelong, offmovex, offmovey, no1) { /* ... */ };
|
SubGameHooks.utlmousemove = function (gameid, spid, downx, downy, movex, movey, timelong, offmovex, offmovey, no1) {
|
||||||
|
if (typeof SpriteEventController === 'undefined') { return; }
|
||||||
|
return SpriteEventController.handleMouseMove(gameid, spid, downx, downy, movex, movey, timelong, offmovex, offmovey, no1);
|
||||||
|
};
|
||||||
|
|
||||||
// [A] utlgamemydrawbegin(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7):精灵绘制开始事件。
|
// [A] utlgamemydrawbegin(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7):精灵绘制开始事件。
|
||||||
// SubGameHooks.utlgamemydrawbegin = function (gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7) { /* ... */ };
|
SubGameHooks.utlgamemydrawbegin = function (gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7) {
|
||||||
|
if (typeof SpriteEventController === 'undefined') { return; }
|
||||||
|
return SpriteEventController.handleDrawBegin(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7);
|
||||||
|
};
|
||||||
|
|
||||||
// [A] gamemydraw(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7):精灵绘制帧事件。
|
// [A] gamemydraw(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7):精灵绘制帧事件。
|
||||||
// SubGameHooks.gamemydraw = function (gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7) { /* ... */ };
|
SubGameHooks.gamemydraw = function (gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7) {
|
||||||
|
if (typeof SpriteEventController === 'undefined') { return; }
|
||||||
|
return SpriteEventController.handleDraw(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7);
|
||||||
|
};
|
||||||
|
|
||||||
// [A] OpenCreateRoom():打开创建房间界面。
|
// [A] OpenCreateRoom():打开创建房间界面。
|
||||||
// SubGameHooks.OpenCreateRoom = function () { /* ... */ };
|
// SubGameHooks.OpenCreateRoom = function () { /* ... */ };
|
||||||
|
|||||||
Reference in New Issue
Block a user