diff --git a/packages-user/data-base/src/map/dynamicTile.ts b/packages-user/data-base/src/map/dynamicTile.ts index dc209e4..f15941f 100644 --- a/packages-user/data-base/src/map/dynamicTile.ts +++ b/packages-user/data-base/src/map/dynamicTile.ts @@ -115,8 +115,12 @@ export class DynamicTile return save; } + /** + * 从存档恢复动态图块:先经 `set` 还原图块数字(同时重取原始图块并重建默认事件), + * 再按存档逐条覆盖事件;`num` 与 `events` 即 `IDynamicBlockSave` 的全部字段。 + */ loadState(save: Readonly): void { - this.restoreDefaultEvents(); + this.set(save.num); if (save.events) { const eventView = this.tileEvent(); eventView.clear(); diff --git a/packages-user/data-base/src/map/saveLoad.test.ts b/packages-user/data-base/src/map/saveLoad.test.ts index 89eb698..b4b0445 100644 --- a/packages-user/data-base/src/map/saveLoad.test.ts +++ b/packages-user/data-base/src/map/saveLoad.test.ts @@ -160,8 +160,8 @@ describe('DynamicTile save and load round trips', () => { } }); - // 疑似 bug:loadState 不恢复存档中的图块数字,详见 06-TEST-FINDINGS.md #06-09-3 - it.skip('restores the tile num on the same instance', () => { + // 验证 loadState 恢复存档中的图块数字(#06-09-3 已修复) + it('restores the tile num on the same instance', () => { const { layer } = createMapFixture(); const tile = layer.createDynamic(1, 1, 0);