import { GameState, type GameStateData } from '@rpg/engine';
import { FLAGS } from './ids';
/**
* Миграции GameStateData (ось state-версии, отдельная от SAVE_VERSION):
* регистрируются в Game один раз, применяются в state.load при чтении сейва.
* Контракт движка: миграция сама повышает version; от старых версий к новым.
*/
/** Текущая версия формата данных состояния. */
export const STATE_DATA_VERSION = 2;
/** v1→v2: знакомства metElder/metTrader → единый snake_case реестра FLAGS. */
export function migrateV1toV2(data: GameStateData): GameStateData {
const rename = (f: string): string =>
f === 'metElder' ? FLAGS.met_elder : f === 'metTrader' ? FLAGS.met_mila : f;
return { version: 2, flags: data.flags.map(rename), vars: { ...data.vars } };
}
/** Зарегистрировать все миграции (зовёт Game при создании состояния). */
export function registerStateMigrations(state: GameState): void {
state.dataVersion = STATE_DATA_VERSION;
state.addMigration(migrateV1toV2);
}