mirror of
https://github.com/tobspr/shapez.io.git
synced 2026-03-02 03:39:21 +00:00
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation * Add config.local.template.js and rm cached copy of config.local.js * [WIP] Implement painting, cutting, rotating achievements (to log only) * [WIP] Refactor achievements, jsdoc fixes, add npm script - Refactor achievements to make use of Signals - Move implemented achievement interfaces to appropriate platform folders (SteamAchievements in currently in use in browser wrapper for testing) - Fix invalid jsdocs - Add dev-standalone script to package.json scripts * Add steam/greenworks IPC calls and optional private-artifact dependency * Include private artifacts in standalone builds * Uncomment appid include * [WIP] Add steam overlay fix, add hash to artifact dependency * Update electron, greenworks. Add task to add local config if not present * Add more achievements, refactor achievement code * Add receiver flexibility and more achievements - Add check to see if necessary to create achievement and add receiver - Add remove receiver functionality when achievement is unlocked * Add achievements and accommodations for switching states - Fix startup code to avoid clobbering achievements on state switch - Add a few more achievements * Add achievements, ids. Update names, keys for consistency * Add play time achievements * [WIP] Add more achievements * Add more achievements. Add bulk achievement check signal * [WIP] Add achievements. Start savefile migration * Add achievements. Add savefile migration * Remove superfluous achievement stat * Update lock files, fix merge conflict
This commit is contained in:
@@ -12,6 +12,7 @@ import { SavegameInterface_V1004 } from "./schemas/1004";
|
||||
import { SavegameInterface_V1005 } from "./schemas/1005";
|
||||
import { SavegameInterface_V1006 } from "./schemas/1006";
|
||||
import { SavegameInterface_V1007 } from "./schemas/1007";
|
||||
import { SavegameInterface_V1008 } from "./schemas/1008";
|
||||
|
||||
const logger = createLogger("savegame");
|
||||
|
||||
@@ -52,7 +53,7 @@ export class Savegame extends ReadWriteProxy {
|
||||
* @returns {number}
|
||||
*/
|
||||
static getCurrentVersion() {
|
||||
return 1007;
|
||||
return 1008;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -126,6 +127,11 @@ export class Savegame extends ReadWriteProxy {
|
||||
data.version = 1007;
|
||||
}
|
||||
|
||||
if (data.version === 1007) {
|
||||
SavegameInterface_V1008.migrate1007to1008(data);
|
||||
data.version = 1008;
|
||||
}
|
||||
|
||||
return ExplainedResult.good();
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import { SavegameInterface_V1004 } from "./schemas/1004";
|
||||
import { SavegameInterface_V1005 } from "./schemas/1005";
|
||||
import { SavegameInterface_V1006 } from "./schemas/1006";
|
||||
import { SavegameInterface_V1007 } from "./schemas/1007";
|
||||
import { SavegameInterface_V1008 } from "./schemas/1008";
|
||||
|
||||
/** @type {Object.<number, typeof BaseSavegameInterface>} */
|
||||
export const savegameInterfaces = {
|
||||
@@ -19,6 +20,7 @@ export const savegameInterfaces = {
|
||||
1005: SavegameInterface_V1005,
|
||||
1006: SavegameInterface_V1006,
|
||||
1007: SavegameInterface_V1007,
|
||||
1008: SavegameInterface_V1008,
|
||||
};
|
||||
|
||||
const logger = createLogger("savegame_interface_registry");
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
/**
|
||||
* @typedef {import("../game/entity").Entity} Entity
|
||||
*
|
||||
* @typedef {{}} SavegameStats
|
||||
* @typedef {{
|
||||
* failedMam: boolean,
|
||||
* trashedCount: number,
|
||||
* usedInverseRotater: boolean
|
||||
* }} SavegameStats
|
||||
*
|
||||
* @typedef {{
|
||||
* camera: any,
|
||||
|
||||
32
src/js/savegame/schemas/1008.js
Normal file
32
src/js/savegame/schemas/1008.js
Normal file
@@ -0,0 +1,32 @@
|
||||
import { createLogger } from "../../core/logging.js";
|
||||
import { SavegameInterface_V1007 } from "./1007.js";
|
||||
|
||||
const schema = require("./1008.json");
|
||||
const logger = createLogger("savegame_interface/1008");
|
||||
|
||||
export class SavegameInterface_V1008 extends SavegameInterface_V1007 {
|
||||
getVersion() {
|
||||
return 1008;
|
||||
}
|
||||
|
||||
getSchemaUncached() {
|
||||
return schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import("../savegame_typedefs.js").SavegameData} data
|
||||
*/
|
||||
static migrate1007to1008(data) {
|
||||
logger.log("Migrating 1007 to 1008");
|
||||
const dump = data.dump;
|
||||
if (!dump) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Object.assign(data.stats, {
|
||||
failedMam: false,
|
||||
trashedCount: 0,
|
||||
usedInverseRotater: false
|
||||
});
|
||||
}
|
||||
}
|
||||
5
src/js/savegame/schemas/1008.json
Normal file
5
src/js/savegame/schemas/1008.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"type": "object",
|
||||
"required": [],
|
||||
"additionalProperties": true
|
||||
}
|
||||
Reference in New Issue
Block a user