From 4f0007262815b357f86e7ee76365a6d330e6d0af Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Mon, 5 Oct 2026 16:34:28 +0800 Subject: [PATCH] docs(08-05): correct summary for restoreDefaultEvents --- .../08-05-SUMMARY.md | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/.planning/phases/08-test-refactor-alignment/08-05-SUMMARY.md b/.planning/phases/08-test-refactor-alignment/08-05-SUMMARY.md index c90805e..e88c6ed 100644 --- a/.planning/phases/08-test-refactor-alignment/08-05-SUMMARY.md +++ b/.planning/phases/08-test-refactor-alignment/08-05-SUMMARY.md @@ -22,6 +22,8 @@ key-files: modified: - packages-user/data-base/src/map/mapLayer.ts - packages-user/data-base/src/map/eventView.ts + - packages-user/data-base/src/map/tile.ts + - packages-user/data-base/src/map/types.ts - packages-user/data-base/src/map/__test__/gameMap.test.ts - packages-user/data-base/src/map/__test__/mapState.test.ts - packages-user/data-base/src/map/__test__/mapLayer.test.ts @@ -35,13 +37,13 @@ key-files: decisions: - "Q1=A:陈旧码 62/63/64/84/130/125 按 shipped 改写/忽略,不补测、不改生产" - "Q2:addLayer(alias) 别名仅为名字,事件层须显式 setEventLayer" - - "D-10 生产修复(经用户确认):getMapData 子区域、toStatic 默认事件、reset 纯度、resize2 清点事件、cropPointEvents 重索引、indexer 宽度同步" + - "D-10 生产修复(经用户确认):getMapData 子区域、toStatic 默认事件(公开 restoreDefaultEvents)、reset 纯度、resize2 清点事件、cropPointEvents 重索引、indexer 宽度同步" completed: 2026-10-05 --- # 08-05 — data-base/map 测试对齐 Summary -**一句话:** 将 `packages-user/data-base` 的 `map` 子系统 11 个测试文件对齐 shipped 接口/形状,并按用户确认的 D-10 例外修复了 5 处 `mapLayer.ts`/`eventView.ts` 生产回归,聚焦 **108/108 通过、eslint 0**。 +**一句话:** 将 `packages-user/data-base` 的 `map` 子系统 11 个测试文件对齐 shipped 接口/形状,并按用户确认的 D-10 例外修复 `mapLayer.ts`/`eventView.ts` 生产回归、在 `tile.ts`/`types.ts` 公开 `MapTileBase.restoreDefaultEvents`,聚焦 **108/108 通过、eslint 0**。 ## Task 0 裁决 @@ -49,19 +51,21 @@ completed: 2026-10-05 - **Q2**:`addLayer(alias)` 别名仅为名字,与事件层无关;事件层须显式 `setEventLayer(layer)`。 - **Q3**:无需夹具改动(`DYNAMIC_MOVER_FACE = FaceGroup.Dir8`,夹具已注册)。 -## 生产改动(D-10 经用户确认;仅 `mapLayer.ts` + `eventView.ts`) +## 生产改动(D-10 经用户确认;`mapLayer.ts`、`eventView.ts`、`tile.ts`、`types.ts`) | 文件 | 位置 | 修复 | |------|------|------| +| `map/tile.ts` | `restoreDefaultEvents()` | 可见性由 `protected` 改为 public,供外部调用者恢复默认事件 | +| `map/types.ts` | `ITileBase` | 新增 `restoreDefaultEvents(): void;` 声明(含 jsDoc) | | `map/mapLayer.ts` | `getMapData(x,y,width,height)` | 结束下标 `lineStart + nw`(原用绝对 `nr`);结果缓冲改回 `width * height`(原裁剪为 `nw*nh`),越界行补零。修复子区域取值与码 81 语义 | -| `map/mapLayer.ts` | `toStatic(tile, keepEvent)` | `keepEvent === false` 时对复用的静态图块执行 `loadState({})`(`restoreDefaultEvents()` 无覆盖),回退默认事件并保持实例同一性;`keepEvent === true` 仍 `syncTileEvent` | +| `map/mapLayer.ts` | `toStatic(tile, keepEvent)` | `keepEvent === false` 时对复用的静态图块调用新公开的 `restoreDefaultEvents()`,回退默认事件并建立干净基准;`keepEvent === true` 仍 `syncTileEvent` | | `map/mapLayer.ts` | `cropPointEvents(oldWidth,width,height)` | 按旧宽解码旧索引、按新宽 `y*width+x` 重建;超出新范围者丢弃 | | `map/mapLayer.ts` | `resize(width,height)` | 变更后 `this.indexer.setWidth(width)`,并以 `beforeWidth` 调 `cropPointEvents` | | `map/mapLayer.ts` | `resize2(width,height)` | 尺寸不变提前 return 分支补 `this.pointEvents.clear()`;变更分支补 `this.indexer.setWidth(width)` | -| `map/mapLayer.ts` | `indexer` 字段 | 类型收敛为 `ILocationIndexer`(构造处一次 `as`),以在层内同步共享索引器步长;不改 `types.ts` | +| `map/mapLayer.ts` | `indexer` 字段 | 类型收敛为 `ILocationIndexer`(构造处一次 `as`),以在层内同步共享索引器步长;索引器类型改动收敛在层内,不改公开接口 | | `map/eventView.ts` | `reset()` | 回填参考基准后置 `this.dirtyEntries = 0`,使 `dirty()` 恢复为 `false` | -> `types.ts` 未改动;生产改动严格限于 `mapLayer.ts`、`eventView.ts`(`git status` 佐证)。 +> 生产改动为 `mapLayer.ts`、`eventView.ts`、`tile.ts`、`types.ts` 四个文件;其中 `tile.ts`/`types.ts` 仅将 `restoreDefaultEvents` 公开并声明到 `ITileBase`(`git status` 佐证)。 ## 测试对齐改动(10 个文件) @@ -83,8 +87,8 @@ completed: 2026-10-05 ## 门禁证据 - **聚焦运行**:`pnpm exec vitest run packages-user/data-base/src/map/__test__` → **Test Files 11 passed(11);Tests 108 passed(108)**(0 failed)。 -- **eslint**:`pnpm exec eslint --fix` + `pnpm exec eslint`(`mapLayer.ts`、`eventView.ts`、`map/__test__`)→ **0 报错**。 -- **零其它生产改动**:`git status` 下 `map/**` 仅 `eventView.ts`、`mapLayer.ts` 两个生产文件 + 10 个 `__test__/*.ts`;`types.ts` 已回退。 +- **eslint**:`pnpm exec eslint --fix` + `pnpm exec eslint`(`mapLayer.ts`、`eventView.ts`、`tile.ts`、`types.ts`、`map/__test__`)→ **0 报错**。 +- **生产改动范围**:`git status` 下 `map/**` 仅 `eventView.ts`、`mapLayer.ts`、`tile.ts`、`types.ts` 四个生产文件 + 10 个 `__test__/*.ts`;此外无其它生产改动。 - **skip 计数**:未新增 skip;仓库唯一 skip 仍为 `hero/equipment.test.ts` 码 147。 ## 备注(供知悉) @@ -93,6 +97,6 @@ completed: 2026-10-05 ## Deviations from Plan -- **D-10 生产修复(经用户确认)**:`getMapData`/`toStatic`/`cropPointEvents`/`resize`/`resize2`/eventView `reset`——超出「零生产改动」默认,属用户逐条授权的例外。 +- **D-10 生产修复(经用户确认)**:`getMapData`/`toStatic`/`cropPointEvents`/`resize`/`resize2`/eventView `reset`,并将 `MapTileBase.restoreDefaultEvents` 公开并声明到 `ITileBase`(`toStatic` 改用它而非 `loadState({})`)——超出「零生产改动」默认,属用户逐条授权的例外。 - **计划外一并对齐(Rule 1/F)**:`getLayerByAlias`/`getLayerAlias` 删除、`GameMap` 构造签名、`setDynamicDirection` 删除——均随同一轮重构发生,按「对齐 shipped」处理。 - **新暴露用例**:`mapLifecycle` 的 `transferToDynamic(1,0)` 断言原被前排失败遮蔽;按「不改 transferToDynamic 生产」以测试前置物化对齐。