From 001cc37bd2c261f4b9a1335a30dbd922153cafc4 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Tue, 24 Dec 2019 18:46:26 -0500 Subject: [PATCH] Only enable/disable building buttons if needed --- gorge.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gorge.js b/gorge.js index 34c7cc6..f7dddaf 100644 --- a/gorge.js +++ b/gorge.js @@ -248,6 +248,8 @@ function displayBuildings() { for (const [key, value] of Object.entries(belongings)) { + let available = states.buildings[key].available; + if (!belongings[key].visible) { if (resources.food * 10 >= costOfBuilding(key).food) { unlockBuilding(key); @@ -270,12 +272,14 @@ function displayBuildings() { name.innerText = value.count + " " + (value.count == 1 ? buildings[key].name : buildings[key].plural); cost.innerText = render(buildingCost.food) + " food"; - if (canAfford(buildingCost) && button.classList.contains("building-button-disabled")) { + if (canAfford(buildingCost) && available !== true) { button.classList.remove("building-button-disabled"); cost.classList.add("building-button-cost-valid"); - } else if (!canAfford(buildingCost) && !button.classList.contains("building-button-disabled")) { + states.buildings[key].available = true; + } else if (!canAfford(buildingCost) && available !== false) { button.classList.add("building-button-disabled"); cost.classList.add("building-button-cost-invalid"); + states.buildings[key].available = false; } } } @@ -472,6 +476,17 @@ const states = {}; // we can just check if they've been handled already function initializeStates() { + const buildingStates = {}; + + Object.keys(buildings).forEach(key => { + buildingStates[key] = { + visible: undefined, + available: undefined + } + }); + + states.buildings = buildingStates; + const upgradeStates = {}; Object.keys(upgrades).forEach(key => {