# 房间状态与开局流程

## 分清五类状态

| 状态来源 | 负责内容 |
| --- | --- |
| 房间数据 | 成员、席位、角色/地图选择、准备和房间版本 |
| 连接 | 建立中、连通、断开和恢复 |
| 本地资源 | 下载、解码、场景与视觉准备 |
| 对局 | 规则/种子、局代次、开局确认、playing、终局 |
| 界面 | 当前操作、等待原因、错误与退出反馈 |

界面依据真实快照和事件渲染，不用本地按钮颜色充当对方已准备。房间存在不等于对局可恢复，连接完成不等于场景已加载。

## 更新与冲突

修改自己的角色只更新自己的字段，不回写过期的完整成员列表。按版本处理并发更新，冲突后回读再应用原意图。地图/规则改变是否清除准备由作品明确规定；不能顺带把无关成员状态重置。

每次异步操作捕获当前房间与局代次，返回时再次核对。取消后迟到的加入/加载响应不能重开旧房间；清理结果未知时核对原操作，不创建新身份留下重复席位。

## 资源与双方开局屏障

双方可并行加载。各端上报自己的真实完成状态；快端显示“本机已准备，等待对方加载”和已等时长，不编造对方百分比。场景节点都存在后才发送依赖这些节点的消息。

双方规则与局代次一致、资源就绪、游戏握手完成后，再共同倒计时和放开输入。初始化回调先安装接收器、启动握手后返回；不要在阻止消息交付的回调中等待远端 ACK。

倒计时边界、playing 确认和重开请求都按当前局处理，一端进入 playing 后也不能丢弃另一端当前局的取消/恢复消息。一次开局失败与房间保留分开，不能因慢加载直接解散房间。

## 后台、退出与同房重开

短暂切后台不等于主动离开；回来回读当前房间与连接状态。主动退出显示确认后的结果，迟到响应不污染新房间。另一窗口接管后旧窗口停止争抢；不要自动抢回。

重开创建新局代次并清理旧战斗输入、监听与资源引用，成员/选角保留按作品规则处理。角色、地图、连接与准备信息都要真实填入界面，失败保留原选择和重试入口。

## 本地自测

双方各连续选角 20 次，并发换图/准备、分别慢加载、取消后迟到完成、倒计时末帧重开、后台返回、退出再进和同房第二局。检查两端成员与规则一致，不串局、不重复开局、无幽灵席位。
