@@ -0,0 +1,64 @@
# Layer4_MainMenu / Layer6 接线交付
范围按用户确认:接通菜单事件与已有功能,缺失业务明确列出。分支 `codex/layer4-layer6-wiring` ;本次不改服务器或网络协议,不实现子游戏。
## 已接通
- `LobbyPanel` 实例化现有 Layer4、Layer6 和相邻通知菜单 prefab;设置、个人信息、加入房间面板、公告、更多菜单及关闭入口已接通。
- 菜单使用 Cocos `Button.EventType.CLICK` ,隐藏节点、不可交互按钮、重连状态与弹窗遮挡均阻止底层业务事件。房卡/星星图标、底板、数字、购买按钮指向同一类型事件。
- 按 `11_GameUI.JumpMenuScene` 的执行顺序迁移审核版本、启动来源、代理/支付、隐藏任务/分享、小程序、大厅模式、主菜单四入口、房卡、排行、兑换码等显隐条件。
- 按可见按钮数量排列底栏与更多托盘,托盘扩宽后保持原左边界。原始 1280x720 坐标换算到现有居中布局,保留 Cocos 1600x720 画布。
- `lobby-menu.ts` 是菜单策略的唯一来源,遵循远程配置的层级读取与 hall_config 合并。保留旧 `hallConfigName` 字面量 `actData:` 导致顶层 `actData` 不覆盖活动配置的行为;保留字符串 `'0'` 的旧真值语义。
- 任务红点直接读取用户创建的 `Spirit17/Tip` Sprite,只控制 active;已移除 `taskTipPrefab` 脚本与场景引用。头像/金额继续使用已有 Cocos Sprite/位图字体 Label。
- 用户整理的 `TaskItem` 已通过 MCP 导出为独立 prefab;Spirit311 使用原进度底图与前景图,绑定原生 ProgressBar。Layer26_Task 使用横向 ScrollView + 矩形 Mask + Content Layout, TaskListView 根据数据 instantiate 条目。保留卡片美术与字体,未完成/可领取/已领取状态及仅第一个未完成条目显示“去做任务”与原逻辑一致。
- `TaskListView.render(tasks, roomCardName)` 提供任务响应的渲染入口;`task-do` / `task-claim` 事件携带 taskid。任务按钮现已通过 Runtime/Commands 发送 `agent/get_player_task` ; Store 校验回包后驱动 Layer26。领奖发送 `agent/get_task_award` ,响应更新任务 state=2 与玩家 taskstate。房卡仅由 `update_roomcard` 绝对余额推送更新;`player_finish_task` 响应遵循原红点条件。
- 任务请求带 agentid/playerid/gameid;领奖按实际旧代码仅带 agentid/playerid/taskid。已同步修正协议文档的 gameid 误记。请求期间防重复发送,超时/服务器 show_message/重连解除等待;普通余额提示不取消任务请求。任务窗口关闭与退出清理监听器和定时器。
- 修复已有加入房间面板打开错误:Spirit236–241 为 Sprite 数字槽,初始化隐藏,不再当成 Label 清空。
- `Launchtype` 按原工程分别读取 URL 或 `app_Launchtype` ;从大厅启动时,设置中的退出登录提示返回大厅退出。
## 已发出菜单事件,业务仍待接入
这些入口不发送猜测协议。`PlatformStartup` 记录 `lobby-action` ,按明确的中文说明提示缺失功能。后续业务可在这一个入口接入。
- 房间:创建房间的子游戏规则、加入房间键盘/提交与真实 GameEntry、星星场、我的房间、官方试玩/微房号列表。Layer6 的 group-103 仍是隐藏的房间列表资源,尚无服务数据驱动;其动态列表项的 prefab 迁移属于后续房间列表业务。
- 列表业务:普通排行、VIP 排行、子游戏战绩、比赛模块。任务“去做任务”已按旧工程打开分享页,不伪造任务完成上报。
- 原生与外部页面:二维码、更多游戏/返回大厅、商城、背包、活动的完整身份参数与原生页面接口。分享面板与原生调用入口已接通;真实原生分享结果/任务完成回调仍待联调。
- 账号与服务:房卡/星星支付、兑换码提交、绑定手机、代理、保险箱、意见反馈提交。
- 设置原有音乐/音效本地开关仍可操作;音频实际播放系统、震动/语音开关及个人信息中的实名认证仍待接入。
## 验证
在 `cocoscreator_projects` 下:
``` powershell
node - -test framework-tests / presentation / lobby-menu . test . ts framework-tests / presentation / lobby-policy . test . ts framework-tests / presentation / lobby-model . test . ts framework-tests / platform-login / lobby-links . test . ts
node - -test framework-tests / presentation / task-item . test . ts
node node_modules / typescript / bin / tsc -p tsconfig . framework . json - -noEmit - -lib ES2022 , DOM
node node_modules / typescript / bin / tsc -p YouleNexus / tsconfig . json - -noEmit - -ignoreDeprecations 6.0 - -skipLibCheck - -lib ES2022 , DOM - -types node - -strict
node scripts / check-import -boundaries . mjs
```
- 14 项针对性测试通过。菜单测试直接执行原工程函数,覆盖 288 组配置/启动来源组合,并额外验证配置来源和字符串真值。
- 上述框架及 Creator 脚本类型检查通过;导入边界检查通过;`git diff --check` 通过。
- 原始无覆盖参数的检查有基线配置限制:框架 ES2020 lib 不包含已有测试使用的 `Array.at` ; MCP 内置旧 TypeScript 不支持现有 const 类型参数/allowImportingTsExtensions。未扩大范围改动这些配置。
- Creator 3.8.8 Game View 与浏览器预览分别执行 `scripts/verify-lobby-menu-preview.mjs` ,31 项断言通过;测试使用合成账号状态,主动停掉测试预览的连接,不发送登录或业务包,不构成真实业务联调验收。
- 浏览器预览通过 Electron 坐标鼠标输入点击设置,实际打开设置 prefab,提示错误为空。
- 新 prefab 引用验证 missingCount=0;独立代码审查发现的托盘左边界与 actData 来源问题均已修复并复查通过。
- 预览截图:`cocoscreator_projects/YouleNexus/temp/mcp-captures/layer4-layer6-wired.png` (合成账号,1600x720 设计画布)。
- 任务状态模型 3 项测试通过;`scripts/verify-task-list-preview.mjs` 在独立浏览器预览中通过 15 项检查,覆盖实例数量、滚动范围、裁剪组件、进度条宽度、按钮显隐与事件、刷新、空列表及跨帧销毁。真实鼠标拖动到最右端(592 设计像素),裁剪正常,未误发按钮事件或出现运行错误。任务预览截图为 `temp/mcp-captures/task-list.png` 。
复跑预览脚本:通过 MCP 启动 PlatformStartup 的 Game View/浏览器预览,待加载到登录场景后,将验证脚本作为函数在对应预览 renderer 中执行。它会停止该测试预览的 runtime 并显示合成大厅;结束后重启预览即可恢复正常启动流程。不要在真实使用中的会话中运行该验证器。
## 任务服务器接线追加验证
- Commands、Runtime、PlatformHandlers 共 87 项测试通过;框架及 Creator 类型检查、导入边界检查通过。
- `scripts/verify-task-network-preview.mjs` 在独立 Creator 浏览器预览使用真实 Runtime/Router/Store/LobbyPanel 和记录型 Wire Port,14 项检查通过,覆盖菜单发包、列表弹出、领奖、红点、余额通知竞态、关闭、服务器提示与重连。该测试不向真实服务提交领奖。
- 实际预览已连接配置中的 `ws://127.0.0.1:3088` ,但无缓存登录账号;本次未进行已登录账号的真实任务/领奖服务验收。
## Spirit14 / Spirit679 与网页原生调试
- Spirit14、任务“去做任务”打开现有 Layer22_Share,网页无原生宿主时也正常显示。好友分享使用 friendsSharetypeUrlToptitleDescript;朋友圈按旧 case75,仅 shareType 真值时调用图片分享。url_download、sharename 与 hall_config 分享字段按原来源构造参数,支持远程 shareBgUrl。
- Spirit679 打开 Layer6/group-103 VIP 页面;按 advanced 控制普通玩家/管理入口,主菜单在 VIP 页面期间隐藏,关闭后恢复。仅完成页面入口;房间条目数据、管理操作及进房仍属于未接入房间业务,不把模板样例作为真实房间。
- 新增统一 [NativeCall] 控制台记录:channel、method、完整 args、available。现有 WVJB 调用、settings 配置读取、登录授权、定位、外链及分享均记录;缺少宿主的分享/授权只记录调用,不伪造回调或任务成功。已有宿主照常调用。
- 35 项菜单/分享/原生适配测试及两套类型检查通过;独立浏览器预览验证分享页打开、好友分享完整参数日志、VIP 页打开与关闭。分享截图 temp/mcp-captures/share-wired.png。
- 用户本轮“其他按钮”范围尚未回复确认;本次按明确点名的两个入口处理,未声称所有其他菜单业务完成。