Browse Source

Consolidate saved data to a single big record. Add mechanics for stats

tags/v0.0.7
Fen Dweller 5 years ago
parent
commit
f40e0da5b5
No known key found for this signature in database GPG Key ID: E80B35A6F11C3656
2 changed files with 63 additions and 16 deletions
  1. +7
    -0
      constants.js
  2. +56
    -16
      gorge.js

+ 7
- 0
constants.js View File

@@ -1438,6 +1438,13 @@ const freeBuildingPowerupText = {
desc: "Just kidding. It's full of people."
}
}

const statTypes = {
powerups: {
name: "Powerups Clicked"
}
}

deepFreeze(prodUpgradeText);
deepFreeze(prodAllUpgradeText);
deepFreeze(clickUpgradeText);


+ 56
- 16
gorge.js View File

@@ -2,6 +2,8 @@

const belongings = {};

const stats = {};

const macroDesc = {
name: "Fen",
species: "crux"
@@ -648,6 +650,10 @@ function initializeData() {
Object.keys(powerups).filter(x => powerups[x].duration !== undefined).forEach(key => activePowerups[key] = {
life: 0
});

Object.entries(statTypes).forEach(([key, info]) => {
stats[key] = 0;
});
}

function registerListeners() {
@@ -1224,44 +1230,78 @@ function save(e) {
function saveGame() {
try {
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) {
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() {
try {
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;
}

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;
}

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;
}

for (const [key, value] of Object.entries(save.stats)) {
stats[key] = value;
}
} catch (e) {
clickPopup("Can't load - no access to local storage.", "info", [window.innerWidth / 2, window.innerHeight / 5]);
}


Loading…
Cancel
Save