mirror of
https://github.com/tobspr/shapez.io.git
synced 2026-03-02 03:39:21 +00:00
Refactor pinned shapes and make them smart, closes #72
This commit is contained in:
@@ -9,10 +9,10 @@ import { SavegameSerializer } from "./savegame_serializer";
|
||||
import { BaseSavegameInterface } from "./savegame_interface";
|
||||
import { createLogger } from "../core/logging";
|
||||
import { globalConfig } from "../core/config";
|
||||
import { SavegameInterface_V1000 } from "./schemas/1000";
|
||||
import { getSavegameInterface, savegameInterfaces } from "./savegame_interface_registry";
|
||||
import { SavegameInterface_V1001 } from "./schemas/1001";
|
||||
import { SavegameInterface_V1002 } from "./schemas/1002";
|
||||
import { SavegameInterface_V1003 } from "./schemas/1003";
|
||||
|
||||
const logger = createLogger("savegame");
|
||||
|
||||
@@ -44,7 +44,7 @@ export class Savegame extends ReadWriteProxy {
|
||||
* @returns {number}
|
||||
*/
|
||||
static getCurrentVersion() {
|
||||
return 1002;
|
||||
return 1003;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,6 +93,11 @@ export class Savegame extends ReadWriteProxy {
|
||||
data.version = 1002;
|
||||
}
|
||||
|
||||
if (data.version === 1002) {
|
||||
SavegameInterface_V1003.migrate1002to1003(data);
|
||||
data.version = 1003;
|
||||
}
|
||||
|
||||
return ExplainedResult.good();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,12 +3,14 @@ import { SavegameInterface_V1000 } from "./schemas/1000";
|
||||
import { createLogger } from "../core/logging";
|
||||
import { SavegameInterface_V1001 } from "./schemas/1001";
|
||||
import { SavegameInterface_V1002 } from "./schemas/1002";
|
||||
import { SavegameInterface_V1003 } from "./schemas/1003";
|
||||
|
||||
/** @type {Object.<number, typeof BaseSavegameInterface>} */
|
||||
export const savegameInterfaces = {
|
||||
1000: SavegameInterface_V1000,
|
||||
1001: SavegameInterface_V1001,
|
||||
1002: SavegameInterface_V1002,
|
||||
1003: SavegameInterface_V1003,
|
||||
};
|
||||
|
||||
const logger = createLogger("savegame_interface_registry");
|
||||
|
||||
28
src/js/savegame/schemas/1003.js
Normal file
28
src/js/savegame/schemas/1003.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import { createLogger } from "../../core/logging.js";
|
||||
import { SavegameInterface_V1002 } from "./1002.js";
|
||||
|
||||
const schema = require("./1003.json");
|
||||
const logger = createLogger("savegame_interface/1003");
|
||||
|
||||
export class SavegameInterface_V1003 extends SavegameInterface_V1002 {
|
||||
getVersion() {
|
||||
return 1003;
|
||||
}
|
||||
|
||||
getSchemaUncached() {
|
||||
return schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import("../savegame_typedefs.js").SavegameData} data
|
||||
*/
|
||||
static migrate1002to1003(data) {
|
||||
logger.log("Migrating 1002 to 1003");
|
||||
const dump = data.dump;
|
||||
if (!dump) {
|
||||
return true;
|
||||
}
|
||||
|
||||
dump.pinnedShapes = { shapes: [] };
|
||||
}
|
||||
}
|
||||
5
src/js/savegame/schemas/1003.json
Normal file
5
src/js/savegame/schemas/1003.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"type": "object",
|
||||
"required": [],
|
||||
"additionalProperties": true
|
||||
}
|
||||
Reference in New Issue
Block a user