| @@ -2,7 +2,7 @@ | |||||
| let belongings = {}; | let belongings = {}; | ||||
| let ownedUpgrades = []; | |||||
| let ownedUpgrades = {}; | |||||
| let resources = { | let resources = { | ||||
| "food": 0 | "food": 0 | ||||
| @@ -71,19 +71,32 @@ function displayBuildings() { | |||||
| } | } | ||||
| } | } | ||||
| function canAfford(cost) { | |||||
| console.log(cost) | |||||
| for (const [resource, amount] of Object.entries(cost)) { | |||||
| if (resources[resource] < amount) { | |||||
| return false; | |||||
| } | |||||
| } | |||||
| return true; | |||||
| } | |||||
| function spend(cost) { | |||||
| for (const [resource, amount] of Object.entries(cost)) { | |||||
| resources[resource] -= amount; | |||||
| } | |||||
| } | |||||
| function displayUpgrades() { | function displayUpgrades() { | ||||
| for (const [key, value] of Object.entries(upgrades)) { | for (const [key, value] of Object.entries(upgrades)) { | ||||
| let button = document.querySelector("#upgrade-" + key); | let button = document.querySelector("#upgrade-" + key); | ||||
| let valid = true; | |||||
| for (const [resource, amount] of Object.entries(upgrades[key].cost)) { | |||||
| if (resources[resource] < amount) { | |||||
| valid = false; | |||||
| break; | |||||
| } | |||||
| if (ownedUpgrades[key]) { | |||||
| button.style.display = "none"; | |||||
| return; | |||||
| } | } | ||||
| if (valid) { | |||||
| if (canAfford(upgrades[key].cost)) { | |||||
| button.classList.remove("upgrade-button-inactive"); | button.classList.remove("upgrade-button-inactive"); | ||||
| } else { | } else { | ||||
| button.classList.add("upgrade-button-inactive"); | button.classList.add("upgrade-button-inactive"); | ||||
| @@ -91,6 +104,22 @@ function displayUpgrades() { | |||||
| } | } | ||||
| } | } | ||||
| function buyUpgrade(id) { | |||||
| if (ownedUpgrades[id]) { | |||||
| return; | |||||
| } | |||||
| let upgrade = upgrades[id]; | |||||
| if (!canAfford(upgrade.cost)) { | |||||
| return; | |||||
| } | |||||
| spend(upgrade.cost); | |||||
| ownedUpgrades[id] = true; | |||||
| } | |||||
| function eatMicro() { | function eatMicro() { | ||||
| resources.food += 1; | resources.food += 1; | ||||
| } | } | ||||
| @@ -110,6 +139,10 @@ function initializeData() { | |||||
| belongings[key] = {}; | belongings[key] = {}; | ||||
| belongings[key].count = 0; | belongings[key].count = 0; | ||||
| } | } | ||||
| for (const [key, value] of Object.entries(upgrades)) { | |||||
| ownedUpgrades[key] = false; | |||||
| } | |||||
| } | } | ||||
| function registerListeners() { | function registerListeners() { | ||||
| @@ -198,8 +231,9 @@ function createUpgrades() { | |||||
| buttonName.innerText = value.name; | buttonName.innerText = value.name; | ||||
| button.appendChild(buttonName); | button.appendChild(buttonName); | ||||
| button.addEventListener("mousemove", function(e) { upgradeTooltip(key, event); }); | |||||
| button.addEventListener("mousemove", function(e) { upgradeTooltip(key, e); }); | |||||
| button.addEventListener("mouseleave", function() { upgradeTooltipRemove(); }); | button.addEventListener("mouseleave", function() { upgradeTooltipRemove(); }); | ||||
| button.addEventListener("click", function() { buyUpgrade(key); }); | |||||
| container.appendChild(button); | container.appendChild(button); | ||||
| } | } | ||||