| @@ -2,7 +2,7 @@ | |||
| let belongings = {}; | |||
| let ownedUpgrades = []; | |||
| let ownedUpgrades = {}; | |||
| let resources = { | |||
| "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() { | |||
| for (const [key, value] of Object.entries(upgrades)) { | |||
| 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"); | |||
| } else { | |||
| 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() { | |||
| resources.food += 1; | |||
| } | |||
| @@ -110,6 +139,10 @@ function initializeData() { | |||
| belongings[key] = {}; | |||
| belongings[key].count = 0; | |||
| } | |||
| for (const [key, value] of Object.entries(upgrades)) { | |||
| ownedUpgrades[key] = false; | |||
| } | |||
| } | |||
| function registerListeners() { | |||
| @@ -198,8 +231,9 @@ function createUpgrades() { | |||
| buttonName.innerText = value.name; | |||
| 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("click", function() { buyUpgrade(key); }); | |||
| container.appendChild(button); | |||
| } | |||