Commit Graph
9 Commits
Author SHA1 Message Date
joywayerandClaude Opus 5 d4de34c951 二七王:B 设计修正发包路由与解散入口
两处对着平台代码核实后修正:

发包必须用 RpcHelper.sendRpc('youle','erqiwang',...),不能用 sendGameRpc
——后者预设 route="room",包会被路由到平台房间模块、永远到不了子游戏 mod.js,且不报错。

解散结算根本进不了 _ReceiveData:平台按 route 分流,room 路由交给 Net[rpc],
只有子游戏路由才转 _ReceiveData。平台另有专门入口 Game_Modify.Free(Desk.deskfree),
取值路径因此比协议文档少一层(deskfree.data.aset),且参数可能为 null 需容忍。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 17:05:11 +08:00
joywayerandClaude Opus 5 f63de40229 二七王:前端子项目 B(网络与数据镜像)设计定案
架构:点击 → 语义化发包 → RpcHelper;推送 → 唯一分发入口 → 一 rpc 一 handler
→ 写 GameState → emit 语义事件。handler 不引用任何 UI 组件,故 B 可脱离 C 独立完成与测试。

GameState 只镜像不派生、字段名对齐协议、缺字段不兜底。事件只带「发生了什么」,
数据由订阅者从 GameState 读,避免同一份数据两处存。

两条核心验收把红线变成断言:增量累积与 deskinfo 全量重建必须完全相等
(即「视图 = f(服务端快照)」);发包字段集合不含任何结论字段。
测试数据用服务端 _rpc.js 脚手架捕获的真实下发包,不手写假包。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 17:02:40 +08:00
joywayerandClaude Opus 5 69cb04ecfa 二七王:确立「一个 View 恰好一个图层」不变式
原本允许 Layer1/Layer2 声明多图层,但「哪个 group 属于哪个图层」只能靠
注释隐含、无法机械判定。改为跨图层的界面拆成两个 View,各带自己的 Layer——
一个 View 将来对应一个 BaseComponent 组件,本就该分开。

SpriteIndex 加校验守住该不变式:View 缺 Layer、或写成 Layer1/Layer2 均报错。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 21:01:04 +08:00
joywayerandClaude Opus 5 8b579896b2 二七王:精灵常量再优化为 View → group 容器 → 精灵
group 与其名下精灵合并为 { id: 群组常量, 精灵键: id, ... },
所属关系由结构表达而非注释;拿到 group 对象即可 showGroup 并遍历其精灵。

SpriteIndex 随之支持 groupIdOf:精灵与群组 ID 被结构绑定,
显隐走群组时可机械查出。校验增至 5 处显式失败(重复键、精灵值非数字、
View 下混入标量键、group 缺 id、查不到的键)。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 20:51:18 +08:00
joywayerandClaude Opus 5 5ac445d08d 二七王:精灵常量改为以 UI View 为组织单位
Layer/Group 扁平声明在 View 定义下,精灵只写 id、所属关系写在注释里;
一个 View 对应一个 UI 组件,拿到 View 即拿到它的全部精灵与图层群组。

SpriteIndex 的展平逻辑随之调整:保留键 Layer*/Group* 跳过,其余键即精灵;
新增「值非数字即报错」——两者结构上同级、只靠键名区分,写错前缀会静默变成假精灵。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 20:44:17 +08:00
joywayerandClaude Opus 5 3b9828c8ca 二七王:修正文档里服务端测试脚本数量
实际是 17 个 test_*.js(624 checks),原文写的 20 把 _assert/_rpc/_shim 也数进去了。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 19:52:31 +08:00
joywayerandClaude Opus 5 e326481f2f 二七王:前端子项目 A 实施计划
14 个任务,每个自带 TDD 循环与提交:shared 抽取与同步(1-2)、
单测框架与漂移守卫(3)、core 四个纯逻辑模块(4-7)、布局求解器(8)、
常量层三批(9/10/12)、精灵索引(11)、常量机械守卫(13)、接入骨架(14)。

顺带修订设计文档两处:shared 抽取函数数量 7→8(原文列了 8 个名字),
CardMark.markOf 签名与计划对齐(拖拉机判定需整手牌作上下文)。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:55:26 +08:00
joywayerandClaude Opus 5 0f29c2e08c 二七王:shared 同步脚本改放仓库根目录
同步是跨端动作(源在 server、目标在 client),不属于任何一端,
故 sync_shared.cmd 放根目录而非 client/scripts/。

同时写明单向流水线纪律:只改服务端 shared,改完跑脚本同步;
前端副本只读,本地改动会被覆盖,由字节一致守卫测试兜底。
验收补一条:CLAUDE.md「常用命令」需同步收录该脚本。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:42:52 +08:00
joywayerandClaude Opus 5 849de06194 二七王:前端子项目 A(地基与逻辑层)设计定案
前端拆为 A→F 六个子项目,本文定案 A:目录结构、常量层全量、
core 纯逻辑、codes/ui 布局求解器、shared 抽取与同步、单测框架、接入骨架。

两处取舍已定:求解器归子游戏 codes/ui;排序算法走服务端 shared/ 同源
(抽 7 个牌值编码与牌型分组函数,arith 改挂引用,现有 20 个测试为安全网)。

资源与精灵不阻塞编码——常量文件先行、即建资源的规格书,编辑器后期照建。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:36:55 +08:00