diff --git a/src/js/savegame/savegame.js b/src/js/savegame/savegame.js index 0ad630f6..3fea2d5e 100644 --- a/src/js/savegame/savegame.js +++ b/src/js/savegame/savegame.js @@ -11,6 +11,7 @@ import { SavegameInterface_V1003 } from "./schemas/1003"; import { SavegameInterface_V1004 } from "./schemas/1004"; import { SavegameInterface_V1005 } from "./schemas/1005"; import { SavegameInterface_V1006 } from "./schemas/1006"; +import { SavegameInterface_V1007 } from "./schemas/1007"; const logger = createLogger("savegame"); @@ -51,7 +52,7 @@ export class Savegame extends ReadWriteProxy { * @returns {number} */ static getCurrentVersion() { - return 1006; + return 1007; } /** @@ -120,6 +121,11 @@ export class Savegame extends ReadWriteProxy { data.version = 1006; } + if (data.version === 1006) { + SavegameInterface_V1007.migrate1006to1007(data); + data.version = 1007; + } + return ExplainedResult.good(); } diff --git a/src/js/savegame/savegame_interface_registry.js b/src/js/savegame/savegame_interface_registry.js index 07b5353c..96389c50 100644 --- a/src/js/savegame/savegame_interface_registry.js +++ b/src/js/savegame/savegame_interface_registry.js @@ -7,6 +7,7 @@ import { SavegameInterface_V1003 } from "./schemas/1003"; import { SavegameInterface_V1004 } from "./schemas/1004"; import { SavegameInterface_V1005 } from "./schemas/1005"; import { SavegameInterface_V1006 } from "./schemas/1006"; +import { SavegameInterface_V1007 } from "./schemas/1007"; /** @type {Object.} */ export const savegameInterfaces = { @@ -17,6 +18,7 @@ export const savegameInterfaces = { 1004: SavegameInterface_V1004, 1005: SavegameInterface_V1005, 1006: SavegameInterface_V1006, + 1007: SavegameInterface_V1007, }; const logger = createLogger("savegame_interface_registry"); diff --git a/src/js/savegame/schemas/1007.js b/src/js/savegame/schemas/1007.js new file mode 100644 index 00000000..ec8d9db6 --- /dev/null +++ b/src/js/savegame/schemas/1007.js @@ -0,0 +1,34 @@ +import { createLogger } from "../../core/logging.js"; +import { SavegameInterface_V1006 } from "./1006.js"; + +const schema = require("./1007.json"); +const logger = createLogger("savegame_interface/1006"); + +export class SavegameInterface_V1007 extends SavegameInterface_V1006 { + getVersion() { + return 1007; + } + + getSchemaUncached() { + return schema; + } + + /** + * @param {import("../savegame_typedefs.js").SavegameData} data + */ + static migrate1006to1007(data) { + logger.log("Migrating 1006 to 1007"); + const dump = data.dump; + if (!dump) { + return true; + } + + const waypoints = dump.waypoints.waypoints; + + // clear ejector slots + for (let i = 0; i < waypoints.length; ++i) { + const waypoint = waypoints[i]; + waypoint.layer = "regular"; + } + } +} diff --git a/src/js/savegame/schemas/1007.json b/src/js/savegame/schemas/1007.json new file mode 100644 index 00000000..6682f615 --- /dev/null +++ b/src/js/savegame/schemas/1007.json @@ -0,0 +1,5 @@ +{ + "type": "object", + "required": [], + "additionalProperties": true +}