Files
youle_cocos/docs/superpowers/reports/2026-09-06-layer4-layer6-wiring.md
T

65 lines
8.5 KiB
Markdown
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.
# 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。
- 用户本轮“其他按钮”范围尚未回复确认;本次按明确点名的两个入口处理,未声称所有其他菜单业务完成。