feat: integrate erqiwang rooms and use spec-compliant Web compilation
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# 二七王创建房间接入
|
||||
|
||||
核对日期:2026-09-07。本篇记录创建房间阶段的实际实现,不代表二七王牌桌玩法已迁移完成。
|
||||
|
||||
## 资源与入口
|
||||
|
||||
工程为 `cocoscreator_projects/YouleNexus`。`PlatformStartup.scene` 的 `PlatformServices / SubgameAssets` 已配置:
|
||||
|
||||
- `gameKey = erqiwang`。
|
||||
- `createRoom`:`assets/games/erqiwang/ErqiwangCreateRoom.prefab`。
|
||||
- `room`:`assets/games/erqiwang/ErqiwangRoom.prefab`。
|
||||
- `roomScene`:沿用 `assets/scenes/TemplateRoom.scene` 的通用场景容器。
|
||||
|
||||
联调 gameid 按用户确认沿用默认 `J9r4022t80pxlb01zOK76DN1WD4QewFl`,身份仍由运行配置提供,不在创建页重复定义。
|
||||
|
||||
## 页面与规则
|
||||
|
||||
`ErqiwangCreateRoomView` 继承平台 `CreateRoomPage`,只通过上下文提交、取消和报告错误。平台统一处理登录身份、IP、定位、请求信封、等待、超时和回包。
|
||||
|
||||
Inspector 绑定三组 `ToggleContainer`,`allowSwitchOff=false`;八个 Toggle 依次为 6 局、12 局、房主扣卡、AA 每人扣卡、可查牌、不查牌、傍王、爬坡。最后两个 Toggle 没有 ToggleContainer,可以独立勾选或取消。费用由局数与扣卡方式联动计算。
|
||||
|
||||
规则模型 `erqiwang-room-rules.ts` 是前端选项与编码转换的唯一来源。界面顺序为局数、扣卡、查牌、傍王、爬坡;实际服务器编码顺序仍为局数、扣卡、傍王、爬坡、查牌。尾部六位填零,总长度十一位。默认 `00000000000`。协议依据见 [服务端协议 §0.5](../../../../server/games/erqiwang/docs/protocol/packet_protocol.md#05-roomtype-房间选项位串),不能按界面顺序直接发包。
|
||||
|
||||
模型拒绝错误长度、非二进制选项、非零预留位以及数组型历史配置;历史来自平台成功回包保存的 `tsgame_roomtype_ + gameid + agentid`,格式仍为 JSON `{data: roomtype}`。没有历史时使用规则来源定义的默认选择,不静默修补非法历史。
|
||||
|
||||
## 平台契约与房间交接
|
||||
|
||||
公共 SDK 的 `Roomtype = string | readonly unknown[]` 用于创建页面、请求、成功响应、状态、GameEntry、GameHost 快照及事件。字符串保持原值,数组仍复制并冻结;平台不解释二七王位含义。VIP 房间配置同样保留字符串。
|
||||
|
||||
创建成功后,`createErqiwangGame` 校验配置并提供三个服务器座位,平台维护权威状态,临时房间页显示房号、玩家以及“玩法尚未接入”。退出使用本房间 GameHost。准备按钮暂不展示,避免进入尚未迁移的牌桌流程。玩法消息处理未实现,收到会显式报错;deskinfo 仅保留原值,尚无玩法恢复表现。
|
||||
|
||||
## 验证与限制
|
||||
|
||||
- `framework-tests/presentation/erqiwang-room-entry.test.ts`:穷举 32 种选项组合,对照实际服务端 `class.config.js` 验证编码、恢复、费用和人数。
|
||||
- `framework-tests/platform/runtime.test.ts`:模拟登录、创建出站包、成功回包、三座位状态、房间显示与退出命令。
|
||||
- 相关回归测试 157 项通过;Cocos 工程与框架 TypeScript 检查、导入边界检查通过。
|
||||
- Game View 实际坐标点击验证 11 项:必选互斥、费用、独立开关、精确编码、busy、防重复、关闭清理及历史恢复。新 prefab 共 52 处 UUID 引用有效。
|
||||
|
||||
本次未修改服务器代码,未在真实服务器创建房间。本地模拟通过不等于实际服务端创建成功;后续联调从大厅“创建房间”入口进行,并检查出站 roomtype 类型与值。
|
||||
Reference in New Issue
Block a user