@@ -254,6 +254,14 @@ function updateDisplay() {
displayUpgrades(showOwnedUpgrades);
tickPowerups(delta);
Object.keys(statTypes).forEach(key => {
const value = document.querySelector("#stat-value-" + key);
value.innerText = render(stats[key]);
})
stats.seconds += delta / 1000;
setTimeout(updateDisplay, 1000 / updateRate);
}
@@ -498,9 +506,9 @@ function setup() {
initializeCaches();
initializeStates();
updateAll();
}
const cache = {};
function initializeCaches() {
@@ -664,14 +672,20 @@ function registerListeners() {
const gulp = "*glp*";
clickPopup(text, "food", [e.clientX, e.clientY]);
clickPopup(gulp, "gulp", [e.clientX, e.clientY]);
stats.clicks += 1;
});
document.querySelector("#save").addEventListener("click", save);
document.querySelector("#reset").addEventListener("click", reset);
document.querySelector("#numbers").addEventListener("click", cycleNumbers);
document.querySelector("#stats").addEventListener("click", () => document.querySelector("#stats-modal").classList.add("modal-active"));
document.querySelector("#options").addEventListener("click", openOptions);
document.querySelector("#stats-exit").addEventListener("click", () => document.querySelector("#stats-modal").classList.remove("modal-active"));
document.querySelector("#options-exit").addEventListener("click", closeOptions);
document.querySelector("#upgrades").addEventListener("click", switchShowOwnedUpgrades);
document.addEventListener("keydown", e => {
@@ -691,6 +705,25 @@ function registerListeners() {
});
}
function openOptions() {
document.querySelector("#options-modal").classList.add("modal-active");
Object.keys(options).forEach(key => {
const input = document.querySelector("#option-value-" + key);
input.value = options[key].get();
});
}
function closeOptions() {
document.querySelector("#options-modal").classList.remove("modal-active");
Object.keys(options).forEach(key => {
const input = document.querySelector("#option-value-" + key);
options[key].set(input.value);
});
}
function createButtons() {
createBuildings();
createUpgrades();
@@ -848,6 +881,52 @@ function createDisplays() {
}
})
const statHolder = document.querySelector("#stats-holder");
Object.keys(statTypes).forEach(key => {
const div = document.createElement("div");
div.classList.add("stat-line");
const name = document.createElement("div");
name.classList.add("stat-name");
const value = document.createElement("div");
value.classList.add("stat-value");
value.id = "stat-value-" + key;
name.innerText = statTypes[key].name;
value.innerText = stats[key];
div.appendChild(name);
div.appendChild(value);
statHolder.append(div);
});
const optionHolder = document.querySelector("#options-holder");
Object.keys(options).forEach(key => {
const div = document.createElement("div");
div.classList.add("option-line");
const name = document.createElement("div");
name.classList.add("option-name");
const value = document.createElement("input");
value.classList.add("option-value");
value.id = "option-value-" + key;
name.innerText = options[key].name;
value.innerText = options[key].get();
div.appendChild(name);
div.appendChild(value);
optionHolder.append(div);
});
}
function renderLine(line) {
@@ -1247,6 +1326,7 @@ function saveGame() {
save.resources = resources;
save.belongings = belongings;
save.stats = stats;
save.macroDesc = macroDesc;
storage.setItem("save", JSON.stringify(save));
} catch (e) {
@@ -1264,6 +1344,11 @@ const migrations = [
// introduce stats
save => {
save.stats = {}
},
// introduce macroDesc
save => {
save.macroDesc = {}
}
]
@@ -1317,6 +1402,10 @@ function load() {
for (const [key, value] of Object.entries(save.stats)) {
stats[key] = value;
}
for (const [key, value] of Object.entries(save.macroDesc)) {
macroDesc[key] = value;
}
} catch (e) {
console.error(e);
clickPopup("Can't load - no access to local storage.", "info", [window.innerWidth / 2, window.innerHeight / 5]);