|
|
@@ -2,6 +2,8 @@ |
|
|
|
|
|
|
|
|
const belongings = {}; |
|
|
const belongings = {}; |
|
|
|
|
|
|
|
|
|
|
|
const stats = {}; |
|
|
|
|
|
|
|
|
const macroDesc = { |
|
|
const macroDesc = { |
|
|
name: "Fen", |
|
|
name: "Fen", |
|
|
species: "crux" |
|
|
species: "crux" |
|
|
@@ -648,6 +650,10 @@ function initializeData() { |
|
|
Object.keys(powerups).filter(x => powerups[x].duration !== undefined).forEach(key => activePowerups[key] = { |
|
|
Object.keys(powerups).filter(x => powerups[x].duration !== undefined).forEach(key => activePowerups[key] = { |
|
|
life: 0 |
|
|
life: 0 |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
Object.entries(statTypes).forEach(([key, info]) => { |
|
|
|
|
|
stats[key] = 0; |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function registerListeners() { |
|
|
function registerListeners() { |
|
|
@@ -1224,44 +1230,78 @@ function save(e) { |
|
|
function saveGame() { |
|
|
function saveGame() { |
|
|
try { |
|
|
try { |
|
|
let storage = window.localStorage; |
|
|
let storage = window.localStorage; |
|
|
|
|
|
const save = {} |
|
|
|
|
|
|
|
|
storage.setItem("save-version", 1); |
|
|
|
|
|
|
|
|
save.version = migrations.length; |
|
|
|
|
|
save.ownedUpgrades = ownedUpgrades; |
|
|
|
|
|
save.resources = resources; |
|
|
|
|
|
save.belongings = belongings; |
|
|
|
|
|
save.stats = stats; |
|
|
|
|
|
|
|
|
storage.setItem("ownedUpgrades", JSON.stringify(ownedUpgrades)); |
|
|
|
|
|
|
|
|
|
|
|
storage.setItem("resources", JSON.stringify(resources)); |
|
|
|
|
|
|
|
|
|
|
|
storage.setItem("belongings", JSON.stringify(belongings)); |
|
|
|
|
|
|
|
|
storage.setItem("save", JSON.stringify(save)); |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
clickPopup("Can't save - no access to local storage.", "info", [window.innerWidth / 2, window.innerHeight / 5]); |
|
|
clickPopup("Can't save - no access to local storage.", "info", [window.innerWidth / 2, window.innerHeight / 5]); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const migrations = [ |
|
|
|
|
|
// dummy migration, because there was no version 0 |
|
|
|
|
|
|
|
|
|
|
|
save => { |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// introduce stats |
|
|
|
|
|
save => { |
|
|
|
|
|
save.stats = {} |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
function migrate(save) { |
|
|
|
|
|
let version = save.version; |
|
|
|
|
|
|
|
|
|
|
|
while (version != migrations.length) { |
|
|
|
|
|
migrations[version](save); |
|
|
|
|
|
version += 1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
save.version = version; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function load() { |
|
|
function load() { |
|
|
try { |
|
|
try { |
|
|
let storage = window.localStorage; |
|
|
let storage = window.localStorage; |
|
|
|
|
|
|
|
|
if (!storage.getItem("save-version")) { |
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
// migrate to everything in one |
|
|
|
|
|
if (storage.getItem("save-version")) { |
|
|
|
|
|
const save = {}; |
|
|
|
|
|
save.ownedUpgrades = JSON.parse(storage.getItem("ownedUpgrades")); |
|
|
|
|
|
save.resources = JSON.parse(storage.getItem("resources")); |
|
|
|
|
|
save.belongings = JSON.parse(storage.getItem("belongings")); |
|
|
|
|
|
save.version = 1; |
|
|
|
|
|
storage.clear(); |
|
|
|
|
|
storage.setItem("save", JSON.stringify(save)) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
let newOwnedUpgrades = JSON.parse(storage.getItem("ownedUpgrades")); |
|
|
|
|
|
|
|
|
const save = JSON.parse(storage.getItem("save")); |
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(newOwnedUpgrades)) { |
|
|
|
|
|
|
|
|
migrate(save); |
|
|
|
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(save.ownedUpgrades)) { |
|
|
ownedUpgrades[key] = value; |
|
|
ownedUpgrades[key] = value; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
let newResources = JSON.parse(storage.getItem("resources")); |
|
|
|
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(newResources)) { |
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(save.resources)) { |
|
|
resources[key] = value; |
|
|
resources[key] = value; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
let newBelongings = JSON.parse(storage.getItem("belongings")); |
|
|
|
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(newBelongings)) { |
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(save.belongings)) { |
|
|
belongings[key] = value; |
|
|
belongings[key] = value; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(save.stats)) { |
|
|
|
|
|
stats[key] = value; |
|
|
|
|
|
} |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
clickPopup("Can't load - no access to local storage.", "info", [window.innerWidth / 2, window.innerHeight / 5]); |
|
|
clickPopup("Can't load - no access to local storage.", "info", [window.innerWidth / 2, window.innerHeight / 5]); |
|
|
} |
|
|
} |
|
|
|