Files
youle_cocos/docs/superpowers/reports/2026-09-07-room-entry-integration.md
T

36 lines
4.1 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.
# 模板房间接入验收
依据:已确认的 `2026-09-07-room-entry-template-design.md`。分支 `codex/room-entry-template`;未提交或合并。服务器零改动。
## 已接入
- Layer15_JoinRoom:0–9、删除、重输、粘贴、短号确认、6 位自动提交。显示保留前导零,出站房号按原模板为 number。复用 00046 BitmapFont;原有 Sprite 数字槽改为 Label。
- Layer27_CreateRoom:根节点挂 TemplateCreateRoomView,使用两个 Cocos ToggleContainer。选择与上次 roomtype 的读取遵循原模板;创建按钮仍发原源码固定数组。重新对齐选项、标签和关闭按钮,面板背景阻止点击穿透。
- create_room 请求、独立创建回包解析和权威房间状态建立;创建回包不要求 players。创建成功的自己资料来自已登录玩家,不向原始回包添加虚构字段。
- 平台与子游戏双向调用沿用 GameEntry / GameModule / GameHost:成功提交状态后挂载模块,房间视图消费快照,准备/退出经受限 host 发回平台。替换原登录专用拒绝房间入口。
- 请求防重复、15 秒超时、错误与断线结束等待;断线关闭房间页并使迟到剪贴板回调失效。关闭页不能撤销已经发往服务器的请求,迟到成功仍由平台按服务器状态进入房间。
- 原样传递 join/login 的 deskinfo。解析人数前传给子游戏的是不可变 roomtype 副本,防止污染服务器原始数据。
## 子游戏如何换创建页
1. 在自己的 prefab 根节点挂继承 `assets/scripts/platform-login/CreateRoomPage.ts` 的脚本,实现 `open(context)`、`setBusy(busy)`、`close()`。
2. 子游戏自行管理选项、布局、校验和异步回调,调用 `context.submit(roomtype)` 提交已经验证的数组,调用 `context.cancel()` 关闭。
3. 在 PlatformStartup 场景的 SubgameAssets.createRoom 指定该 prefab。平台不访问其 group/Spirit 节点。
4. 子游戏的 GameEntry 提供实际 route、resolveSeatCount 和 GameModule。本次模板注册放在 Startup 的组合入口;不把模板的示例规则作为其他游戏的默认值。
模板的 Desk.Create 在没有 getMaxPlayerCount 钩子时明确采用 Game_Config.Max.PlayerCnt=10。本次 TemplateRoomRules 保留该容量;其他游戏必须用自己的真实人数规则。模板没有玩法网络实现,`Game_Surface_3` 模块标识不是任何具体游戏服务器路由的认证结果。TemplateRoom.prefab 是房间接管演示页,不是已完成的牌桌玩法。
## 验证结果
- 223 项房间相关平台/协议/模型测试通过。
- Cocos Game View 30 项检查通过:真实坐标点击键盘、数字显示、删除/粘贴、ToggleContainer(再次点击选中项保持选中)、防重复、迟到回调取消、超时、创建拒绝、创建成功真实加载 TemplateRoom 场景、准备/退出 GameHost、重复成功不重挂、加入成功及 deskinfo 原样恢复。脚本:`cocoscreator_projects/scripts/verify-room-entry-preview.mjs`。实际 socket 在测试前停止,测试回包与出站捕获仅在本地运行。
- Cocos 与 framework 两个严格 TypeScript 检查通过(ES2022/DOM,TypeScript 6);import boundaries 通过。
- 三个 prefab 共 55 个资源引用校验,无缺失;截图检查创建页和加入页布局。
- 全量 775 项测试:770 通过,5 失败。3 项旧迁移测试仍读取已在本任务前移走的 Login_Layer.prefab;2 项账号/登录策略测试硬编码旧 agentid/channelid,与本任务前已调整的 defaults 配置不一致。未为测试改回用户的配置或资源名称。
- 基线哈希核对:原有序列化资源仅 PlatformStartup.scene、Layer15_JoinRoom.prefab、Layer27_CreateRoom.prefab 变化。其余原有 scene/prefab/anim/meta 保持基线。
- 协议审查发现的可变数组问题、集成审查发现的断线剪贴板问题均已修复并复核。
未进行实际服务器创建/加入联调,未实现具体子游戏的规则解释、玩法消息或牌桌操作。本次确认的是模板页面与平台房间交接边界。
截图:`cocoscreator_projects/YouleNexus/temp/mcp-captures/room-create.png`、`room-join.png`。