|
|
@@ -10,11 +10,24 @@ let resources = {}; |
|
|
|
|
|
|
|
|
let updateRate = 60; |
|
|
let updateRate = 60; |
|
|
|
|
|
|
|
|
|
|
|
let currentProductivity = {}; |
|
|
|
|
|
|
|
|
function calculateProductivity() { |
|
|
function calculateProductivity() { |
|
|
let productivity = 0; |
|
|
let productivity = 0; |
|
|
for (const [key, value] of Object.entries(belongings)) { |
|
|
for (const [key, value] of Object.entries(belongings)) { |
|
|
productivity += productivityOf(key); |
|
|
productivity += productivityOf(key); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(upgrades)) { |
|
|
|
|
|
if (!ownedUpgrades[key]) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (value.effect.type == "prod-all") { |
|
|
|
|
|
productivity *= value.effect.amount; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return productivity; |
|
|
return productivity; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@@ -29,9 +42,9 @@ function productivityMultiplierOf(type) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (value.effect.type == "prod-2x") { |
|
|
|
|
|
|
|
|
if (value.effect.type == "prod") { |
|
|
if (value.effect.target == type) { |
|
|
if (value.effect.target == type) { |
|
|
base *= 2; |
|
|
|
|
|
|
|
|
base *= value.effect.amount; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@@ -67,6 +80,7 @@ function buyBuilding(type) { |
|
|
// update stuff |
|
|
// update stuff |
|
|
|
|
|
|
|
|
function updateDisplay() { |
|
|
function updateDisplay() { |
|
|
|
|
|
updateProductivity(); |
|
|
addResources(); |
|
|
addResources(); |
|
|
displayResources(); |
|
|
displayResources(); |
|
|
displayBuildings(); |
|
|
displayBuildings(); |
|
|
@@ -75,8 +89,12 @@ function updateDisplay() { |
|
|
setTimeout(updateDisplay, 1000/updateRate); |
|
|
setTimeout(updateDisplay, 1000/updateRate); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function updateProductivity() { |
|
|
|
|
|
currentProductivity["food"] = calculateProductivity(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function addResources() { |
|
|
function addResources() { |
|
|
resources.food += calculateProductivity() * 1 / updateRate; |
|
|
|
|
|
|
|
|
resources.food += currentProductivity["food"] * 1 / updateRate; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function displayResources() { |
|
|
function displayResources() { |
|
|
@@ -163,7 +181,7 @@ function buyUpgrade(id) { |
|
|
|
|
|
|
|
|
let upgrade = upgrades[id]; |
|
|
let upgrade = upgrades[id]; |
|
|
|
|
|
|
|
|
if (!canAfford(upgrade.cost)) { |
|
|
|
|
|
|
|
|
if (!upgradeAvailable(id)) { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@@ -204,6 +222,10 @@ function initializeData() { |
|
|
belongings[key].visible = false; |
|
|
belongings[key].visible = false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(resourceTypes)) { |
|
|
|
|
|
currentProductivity[key] = 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(upgrades)) { |
|
|
for (const [key, value] of Object.entries(upgrades)) { |
|
|
ownedUpgrades[key] = false; |
|
|
ownedUpgrades[key] = false; |
|
|
} |
|
|
} |
|
|
@@ -263,7 +285,7 @@ function upgradeReachable(id) { |
|
|
for (let upgrade of reqs) { |
|
|
for (let upgrade of reqs) { |
|
|
if (!ownedUpgrades[upgrade]) { |
|
|
if (!ownedUpgrades[upgrade]) { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
|
|
|
|
|
|
}currentProductivity["food"] = 0; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@@ -271,7 +293,6 @@ function upgradeReachable(id) { |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
function upgradeAvailable(id) { |
|
|
function upgradeAvailable(id) { |
|
|
|
|
|
|
|
|
if (!upgradeReachable(id)) { |
|
|
if (!upgradeReachable(id)) { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
@@ -287,6 +308,11 @@ function upgradeAvailable(id) { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
} else if (type == "productivity") { |
|
|
|
|
|
console.log(type, reqs); |
|
|
|
|
|
if (currentProductivity < reqs) { |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@@ -388,6 +414,13 @@ function renderPrereqs(prereqs) { |
|
|
"valid": belongings[id].count >= amount |
|
|
"valid": belongings[id].count >= amount |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
} else if (key == "productivity") { |
|
|
|
|
|
for (const [id, amount] of Object.entries(prereqs.productivity)) { |
|
|
|
|
|
list.push({ |
|
|
|
|
|
"text": amount + " " + resourceTypes[id].name + "/s", |
|
|
|
|
|
"valid": currentProductivity[id].count >= amount |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@@ -410,7 +443,7 @@ function upgradeTooltip(id, event) { |
|
|
|
|
|
|
|
|
fillTooltip("upgrade", "name", upgrades[id].name); |
|
|
fillTooltip("upgrade", "name", upgrades[id].name); |
|
|
fillTooltip("upgrade", "desc", upgrades[id].desc); |
|
|
fillTooltip("upgrade", "desc", upgrades[id].desc); |
|
|
fillTooltip("upgrade", "effect", upgrade_types[upgrades[id].effect.type].desc(buildings[upgrades[id].effect.target].name)); |
|
|
|
|
|
|
|
|
fillTooltip("upgrade", "effect", upgrade_types[upgrades[id].effect.type].desc(upgrades[id].effect)); |
|
|
fillTooltip("upgrade", "cost", renderCost(upgrades[id].cost)); |
|
|
fillTooltip("upgrade", "cost", renderCost(upgrades[id].cost)); |
|
|
fillTooltip("upgrade", "prereqs", renderPrereqs(upgrades[id].prereqs)); |
|
|
fillTooltip("upgrade", "prereqs", renderPrereqs(upgrades[id].prereqs)); |
|
|
|
|
|
|
|
|
|