1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2024-10-27 20:34:29 +00:00

Fix serialization errors and implement hub deserialization

This commit is contained in:
tobspr 2020-05-14 22:20:19 +02:00
parent 330c98267a
commit a1fd83c03c
5 changed files with 28 additions and 12 deletions

View File

@ -35,7 +35,24 @@ export class HubGoals extends BasicSerializableObject {
return errorCode; return errorCode;
} }
console.error("TODO: HubGoals deserialize() properly"); // Compute gained rewards
for (let i = 0; i < this.level; ++i) {
if (i < tutorialGoals.length) {
const reward = tutorialGoals[i].reward;
this.gainedRewards[reward] = (this.gainedRewards[reward] || 0) + 1;
}
}
// Compute upgrade improvements
for (const upgradeId in UPGRADES) {
const upgradeHandle = UPGRADES[upgradeId];
const level = this.upgradeLevels[upgradeId] || 0;
let totalImprovement = upgradeHandle.baseValue || 1;
for (let i = 0; i < level; ++i) {
totalImprovement += upgradeHandle.tiers[i].improvement;
}
this.upgradeImprovements[upgradeId] = totalImprovement;
}
} }
/** /**

View File

@ -80,7 +80,6 @@ export class HUDGameMenu extends BaseHUDPart {
} }
onGameSaved() { onGameSaved() {
console.log("ON GAME SAVED");
this.saveButton.classList.toggle("animEven"); this.saveButton.classList.toggle("animEven");
this.saveButton.classList.toggle("animOdd"); this.saveButton.classList.toggle("animOdd");
} }

View File

@ -64,7 +64,7 @@ function compressObjectInternal(obj, keys = [], values = []) {
result.push(compressObjectInternal(obj[i], keys, values)); result.push(compressObjectInternal(obj[i], keys, values));
} }
return result; return result;
} else if (typeof obj === "object") { } else if (typeof obj === "object" && obj !== null) {
let result = {}; let result = {};
for (const key in obj) { for (const key in obj) {
let index = keys.indexOf(key); let index = keys.indexOf(key);
@ -108,7 +108,7 @@ function decompressObjectInternal(obj, keys = [], values = []) {
result.push(decompressObjectInternal(obj[i], keys, values)); result.push(decompressObjectInternal(obj[i], keys, values));
} }
return result; return result;
} else if (typeof obj === "object") { } else if (typeof obj === "object" && obj !== null) {
let result = {}; let result = {};
for (const key in obj) { for (const key in obj) {
const realIndex = decompressInt(key); const realIndex = decompressInt(key);
@ -124,11 +124,11 @@ function decompressObjectInternal(obj, keys = [], values = []) {
} }
export function decompressObject(obj) { export function decompressObject(obj) {
if (G_IS_DEV) { if (obj.keys && obj.values && obj.data) {
return obj;
}
const keys = obj.keys; const keys = obj.keys;
const values = obj.values; const values = obj.values;
const result = decompressObjectInternal(obj.data, keys, values); const result = decompressObjectInternal(obj.data, keys, values);
return result; return result;
}
return obj;
} }

View File

@ -128,7 +128,7 @@ export class SavegameSerializer {
if (!verifyResult.result) { if (!verifyResult.result) {
return ExplainedResult.bad(verifyResult.reason); return ExplainedResult.bad(verifyResult.reason);
} }
console.log("SAVEGAME:", savegame);
let errorReason = null; let errorReason = null;
errorReason = errorReason || root.entityMgr.deserialize(savegame.entityMgr); errorReason = errorReason || root.entityMgr.deserialize(savegame.entityMgr);

View File

@ -82,7 +82,7 @@ export class MainMenuState extends GameState {
for (let i = 0; i < games.length; ++i) { for (let i = 0; i < games.length; ++i) {
const elem = makeDiv(parent, null, ["savegame"]); const elem = makeDiv(parent, null, ["savegame"]);
makeDiv(elem, null, ["internalId"], games[i].internalId.substr(0, 15)); makeDiv(elem, null, ["internalId"], games[i].internalId.substr(0, 6));
makeDiv( makeDiv(
elem, elem,
null, null,