完整覆盖 C 规范 §6.4 对局流程的 14 个 room rpc: - self_join_room / other_join_room(填对应座位) - self_exit_room / other_exit_room(清空座位) - self/other_apply_free_room(state=1 投票中) - self/other_agree_free_room / refuse_free_room(状态由其他协议累计,本层 no-op) - other_offline / other_online(RoomStore 不持有,handler no-op) - change_seat(swap 两个座位) - free_room(state=2 已解散) 设计要点: - 纯逻辑函数 (ctx, data) => void,单测直接调,不依赖 NetClient/Router - 1 基座位 → 0 基数组下标;越界显式抛错(第二准则) - Object.freeze(handler表) 防止外部写入不安全 handler - 未注册 rpc 显式抛错(第二准则) - RoomState 增加 state 字段(0/1/2 三态:正常/投票中/已解散) 158/158 tests pass, typecheck exit 0。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
framework — 框架真源(唯一权威副本)
各子游戏工程的 assets/framework 是指向本目录的 junction(见 scripts/setup-links.mjs)。
六层结构(依赖严格单向,详见 spec §3):core / net / protocol / platform / ui / sdk。
协议相关实现一律以 docs/protocol/ 为唯一信息源(spec §0.1),不在代码或注释中内联复制协议字段。