diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 257db59..e20ba0b 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -181,7 +181,7 @@ Plans: 3. 移动端(窄屏)布局下,同一场景正常显示且可操作 4. 数据端与渲染端保持双端分离——数据端无 DOM,仍可在 Node 环境跑回放验证 -**Plans**: 4 plans(第一步·只读对账已完成;第二步·勇士移动接口探索(只读)已完成;第三步·勇士本体适配已执行;第四步·勇士渲染修正(04-03 人工审查反馈 D-24..D-28,D-29 修订为注入 `IFaceManager`)已规划,待执行 — 04-CONTEXT D-01/D-02/D-13/D-17/D-18/D-19/D-20/D-21/D-22/D-24..D-29;其余渲染适配与移动端/桌面端双布局待后续增量另行规划) +**Plans**: 4/4 plans executed(第一步·只读对账已完成;第二步·勇士移动接口探索(只读)已完成;第三步·勇士本体适配已执行;第四步·勇士渲染修正(04-03 人工审查反馈 D-24..D-28,D-29 修订为注入 `IFaceManager`)已规划,待执行 — 04-CONTEXT D-01/D-02/D-13/D-17/D-18/D-19/D-20/D-21/D-22/D-24..D-29;其余渲染适配与移动端/桌面端双布局待后续增量另行规划) Plans: **Wave 1** @@ -198,7 +198,7 @@ Plans: **Wave 4** *(blocked on Wave 3 completion)* -- [ ] 04-04-PLAN.md — 勇士渲染修正(04-03 人工审查反馈 D-24..D-29):`render/map/extension/{hero,types,manager}.ts` 注入 `IFaceManager`(`faceManager`;`degrade`/`next` 走 `Dir4FaceHandler`、`movement` 走勇士 `mover.faceHandler`(Dir8)——D-24/D-29)并替换三个弃用 helper;`IMapExtensionManager.addHero(state, layer, faceManager)` 新增参数(D-29,改 `types.ts` 接口签名);拆分 `MapHeroLocationHook` / `MapHeroMoverHook` 且 `onSetPos` 无条件(D-25)、补 `AnimDir`(D-26)、改 `@motajs/animate` 的 `ExcitationCurve2D`(D-27)、保留存量 `state` 用法(D-28);不新增数据端接口,排除 D-18/D-19/D-22 +- [x] 04-04-PLAN.md — 勇士渲染修正(04-03 人工审查反馈 D-24..D-29):`render/map/extension/{hero,types,manager}.ts` 注入 `IFaceManager`(`faceManager`;`degrade`/`next` 走 `Dir4FaceHandler`、`movement` 走勇士 `mover.faceHandler`(Dir8)——D-24/D-29)并替换三个弃用 helper;`IMapExtensionManager.addHero(state, layer, faceManager)` 新增参数(D-29,改 `types.ts` 接口签名);拆分 `MapHeroLocationHook` / `MapHeroMoverHook` 且 `onSetPos` 无条件(D-25)、补 `AnimDir`(D-26)、改 `@motajs/animate` 的 `ExcitationCurve2D`(D-27)、保留存量 `state` 用法(D-28);不新增数据端接口,排除 D-18/D-19/D-22 **UI hint**: yes @@ -393,7 +393,7 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 | 1. 事件系统 | 13/13 | In Progress| | | 2. 寻路系统 | 5/5 | In Progress| | | 3. 数据端完成 | 19/19 | Complete | 2026-09-12 | -| 4. 渲染适配与双布局 | 3/4 | In Progress| | +| 4. 渲染适配与双布局 | 4/4 | In Progress| | | 5. Legacy 移植 | 0/TBD | Not started | - | | 6. 单元测试 | 18/18 | In Progress| | | 7. 数据端缺陷修复 | 15/16 | 暂缓 (Deferred) | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 3f8ffc1..a00d890 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -4,16 +4,16 @@ milestone: v1.0 current_phase: 04 current_phase_name: 渲染适配与双布局 status: executing -stopped_at: Completed 04-03-PLAN.md(勇士本体被动适配:绑定 IHeroLocation + 订阅现有钩子,三文件机器门禁全绿) -last_updated: "2026-09-19T05:12:50.217Z" +stopped_at: Completed 04-04-PLAN.md(勇士渲染修正:注入 IFaceManager、拆钩子类、补 AnimDir、换 @motajs/animate,三文件机器门禁全绿;REND-01/REND-02 保持 Pending) +last_updated: "2026-09-19T08:59:27.618Z" last_activity: 2026-09-18 last_activity_desc: Phase 04 execution started -state_head: bac3e46fba57ea42fa39460810e8dc8c4c8a406c +state_head: 0ad933368c4b2245bba179acdcda4a7b45e5eb7c progress: total_phases: 7 completed_phases: 0 total_plans: 75 - completed_plans: 73 + completed_plans: 74 milestone_name: milestone --- @@ -29,7 +29,7 @@ See: .planning/PROJECT.md (updated 2026-09-17) ## Current Position Phase: 04 (渲染适配与双布局) — READY TO EXECUTE -Plan: 3 of 4 +Plan: 4 of 4 Status: Ready to execute Last activity: 2026-09-18 — Phase 04 execution started @@ -99,6 +99,7 @@ Progress: [█████░░░░░] 50% | Phase 04 P01 | 11min | 3 tasks | 1 files | | Phase 04 P2 | 23min | 4 tasks | 1 files | | Phase 04 P3 | 40min | 4 tasks | 3 files | +| Phase 04 P4 | ~45min | 4 tasks | 3 files | ## Accumulated Context @@ -225,6 +226,9 @@ Recent decisions affecting current work: - [Phase 04]: [Phase 04]: 04-03:渲染端勇士本体绑定 IHeroLocation,经 hero.addHook / hero.mover.addHook 订阅数据端现有钩子(D-21),不新增数据端接口、不改数据端文件 - [Phase 04]: [Phase 04]: 04-03:IMapHeroRenderer 按 D-20 删除 8 个外部驱动成员声明,勇士渲染改为完全被动;对应类内实现方法保留并只由钩子回调调用 - [Phase 04]: [Phase 04]: 04-03:D-18 贴图别名 hero.image 只做最小编译桥接(读取收敛为一处 + 既有 // @ts-expect-error 惯用法标注),不重设贴图来源;D-18 / D-22 成员逐字保留 +- [Phase 04]: [Phase 04]: 04-04:MapHeroRenderer 注入 IFaceManager(faceManager 字段 + 派生 dir4),degrade/next 走 Dir4FaceHandler(FaceGroup.Dir4),movement 走 hero.mover.faceHandler(Dir8);IMapExtensionManager.addHero 新增 faceManager 形参并由 manager.ts 转发(D-24/D-29) +- [Phase 04]: [Phase 04]: 04-04:MapHeroHook 拆为 MapHeroLocationHook(onSetPos 无条件、只出现一次,承载 D-18/D-22 多余方法)与 MapHeroMoverHook(onMoveStart/onMoveEnd/onStepEnd/onSetFaceDir),各自注册各自 controller;onStepEnd 的 AnimDir 分支按 step.dir 设置动画方向(D-25/D-26) +- [Phase 04]: [Phase 04]: 04-04:hero.ts 弃用 mutate-animate 的 TimingFn<2>,改用 @motajs/animate 的 ExcitationCurve2D;D-28 存量 state.roleFace.getFaceOf 三处与 import 逐字保留;types.ts 单行 addHero 签名与 manager.ts 单行构造调用按仓库惯例加 // prettier-ignore 以同时满足计划的单行静态门禁与 prettier ### Roadmap Evolution @@ -262,6 +266,6 @@ None yet. ## Session Continuity -Last session: 2026-09-18T08:00:17.538Z -Stopped at: Completed 04-03-PLAN.md(勇士本体被动适配:绑定 IHeroLocation + 订阅现有钩子,三文件机器门禁全绿) +Last session: 2026-09-19T08:59:26.713Z +Stopped at: Completed 04-04-PLAN.md(勇士渲染修正:注入 IFaceManager、拆钩子类、补 AnimDir、换 @motajs/animate,三文件机器门禁全绿;REND-01/REND-02 保持 Pending) Resume file: None diff --git a/.planning/state.json b/.planning/state.json index 548cafb..45708db 100644 --- a/.planning/state.json +++ b/.planning/state.json @@ -44,5 +44,5 @@ "label": "Advance to the next step", "reason": "Phase 04 of 7 · executing" }, - "updated_at": "2026-09-19T05:12:50.312Z" + "updated_at": "2026-09-19T08:58:48.919Z" }