From d9d72925268009a13fb940c1c1f0dd60e1c0b118 Mon Sep 17 00:00:00 2001 From: Daan Breur Date: Mon, 22 Nov 2021 10:12:43 +0100 Subject: [PATCH] Added Savegame Migration (version 1010) Signed-off-by: Daan Breur --- src/js/savegame/savegame.js | 8 ++++- .../savegame/savegame_interface_registry.js | 2 ++ src/js/savegame/schemas/1010.js | 30 +++++++++++++++++++ src/js/savegame/schemas/1010.json | 5 ++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/js/savegame/schemas/1010.js create mode 100644 src/js/savegame/schemas/1010.json diff --git a/src/js/savegame/savegame.js b/src/js/savegame/savegame.js index 36ed884f..3a6893ff 100644 --- a/src/js/savegame/savegame.js +++ b/src/js/savegame/savegame.js @@ -14,6 +14,7 @@ import { SavegameInterface_V1006 } from "./schemas/1006"; import { SavegameInterface_V1007 } from "./schemas/1007"; import { SavegameInterface_V1008 } from "./schemas/1008"; import { SavegameInterface_V1009 } from "./schemas/1009"; +import { SavegameInterface_V1010 } from "./schemas/1010"; const logger = createLogger("savegame"); @@ -54,7 +55,7 @@ export class Savegame extends ReadWriteProxy { * @returns {number} */ static getCurrentVersion() { - return 1009; + return 1010; } /** @@ -160,6 +161,11 @@ export class Savegame extends ReadWriteProxy { data.version = 1009; } + if (data.version === 1009) { + SavegameInterface_V1010.migrate1009to1010(data); + data.version = 1010; + } + return ExplainedResult.good(); } diff --git a/src/js/savegame/savegame_interface_registry.js b/src/js/savegame/savegame_interface_registry.js index b4dc4233..089b15fc 100644 --- a/src/js/savegame/savegame_interface_registry.js +++ b/src/js/savegame/savegame_interface_registry.js @@ -10,6 +10,7 @@ import { SavegameInterface_V1006 } from "./schemas/1006"; import { SavegameInterface_V1007 } from "./schemas/1007"; import { SavegameInterface_V1008 } from "./schemas/1008"; import { SavegameInterface_V1009 } from "./schemas/1009"; +import { SavegameInterface_V1010 } from "./schemas/1010"; /** @type {Object.} */ export const savegameInterfaces = { @@ -23,6 +24,7 @@ export const savegameInterfaces = { 1007: SavegameInterface_V1007, 1008: SavegameInterface_V1008, 1009: SavegameInterface_V1009, + 1010: SavegameInterface_V1010, }; const logger = createLogger("savegame_interface_registry"); diff --git a/src/js/savegame/schemas/1010.js b/src/js/savegame/schemas/1010.js new file mode 100644 index 00000000..e1917581 --- /dev/null +++ b/src/js/savegame/schemas/1010.js @@ -0,0 +1,30 @@ +import { createLogger } from "../../core/logging.js"; +import { SavegameInterface_V1009 } from "./1009.js"; + +const schema = require("./1010.json"); +const logger = createLogger("savegame_interface/1010"); + +export class SavegameInterface_V1010 extends SavegameInterface_V1009 { + getVersion() { + return 1010; + } + + getSchemaUncached() { + return schema; + } + + /** + * @param {import("../savegame_typedefs.js").SavegameData} data + */ + static migrate1009to1010(data) { + logger.log("Migrating 1009 to 1010"); + const dump = data.dump; + if (!dump) { + return true; + } + + if (!dump.map.hasOwnProperty("allowNonPrimaryColors")) { + dump.map.allowNonPrimaryColors = false; + } + } +} diff --git a/src/js/savegame/schemas/1010.json b/src/js/savegame/schemas/1010.json new file mode 100644 index 00000000..6682f615 --- /dev/null +++ b/src/js/savegame/schemas/1010.json @@ -0,0 +1,5 @@ +{ + "type": "object", + "required": [], + "additionalProperties": true +}