v0.1.35b: 兼容层铲除——迁移链/版本戳/死表死代码/normalize 兼容批/死字段
【A+I】migrate.ts 迁移链(CURRENT_SCHEMA/MIGRATIONS/migrateIfNeeded/MigrationError)整链铲除→validateLoadedState 结构校验(seed/family/members 断言);信封统一 payload 单格式(去双格式兜底);APP_ID 保留 【F】schemaVersion 字段全删(domain/creation/save 8 处);SaveMeta.version 记游戏版本字符串 【C】chronicle 死表+saveChronicle 死方法(首行 return+unreachable legacy 僵尸)全删 【D/E】GameEngine __state globalThis 泄漏口+seed 三元(恒不可达)删除;engineFromSnapshot/noAutoCreate 保留(测试便利——非兼容机器) 【B/H】normalizeGameState 兼容批删:老档字段补(28行)/worldGen 重放(18行)/P0-2 占位 def(9行)/worldSim 字段批删;保留 npcs 重注册/headId 修复/d distress 防护;initSim 补 0.1.34 四键(唯一初始源) 【G】domain 收紧 5 兼容 optional(techniqueRank/Progress/tribBoost/worldGen 必填)+pcgen 必写 【测试】删 9 个兼容验证体(audit 0.1.0-era/全残缺矩阵/空 worldSim 兜底);5989 全绿——金钟罩零漂(新档结构全字段,删除不涉世界数值)
This commit is contained in:
@@ -4,18 +4,6 @@ import { normalizeGameState } from '../src/renderer/game/engine/runtime/World'
|
||||
import { WorldSimState } from '../src/renderer/game/engine/sim/worldsim-data'
|
||||
|
||||
describe('0.1.19 八方风雨', () => {
|
||||
it('兜底:空 worldSim 的旧档 normalize 后 tideTicks 有值(P0 修复)', () => {
|
||||
const w = World.create({ seed: 'p0-1', surname: '甯', familyName: '甯家', motto: 'm', difficulty: 'normal' })
|
||||
const state = w.state as never
|
||||
const fixed = normalizeGameState({
|
||||
...(state as Record<string, unknown>),
|
||||
worldSim: { marketPool: {}, npcDyn: {}, secretQi: {}, newsFeed: [] }
|
||||
} as never) as { worldSim: { tideTicks: number; era: string; calamityLeft: number } }
|
||||
expect(fixed.worldSim.tideTicks).toBe(0)
|
||||
expect(fixed.worldSim.era).toBe('pingshi')
|
||||
expect(fixed.worldSim.calamityLeft).toBe(0)
|
||||
})
|
||||
|
||||
it('stance:四姿态值域 + 年首(约8年)可再评估', () => {
|
||||
const w = World.create({ seed: 'st-1', surname: '冀', familyName: '冀家', motto: 'm', difficulty: 'normal' })
|
||||
const seen = new Set<string>()
|
||||
|
||||
Reference in New Issue
Block a user