Преглед изворни кода

Upgrades have prerequisites. The game only checks for upgrades that are not owned

tags/v0.0.1
Fen Dweller пре 7 година
родитељ
комит
e14143dace
No known key found for this signature in database GPG Key ID: E80B35A6F11C3656
2 измењених фајлова са 50 додато и 6 уклоњено
  1. +10
    -0
      constants.js
  2. +40
    -6
      gorge.js

+ 10
- 0
constants.js Прегледај датотеку

@@ -119,6 +119,11 @@ const upgrades = {
"effect": { "effect": {
"type": "prod-2x", "type": "prod-2x",
"target": "micro" "target": "micro"
},
"prereqs": {
"buildings": {
"micro": 1
}
} }
}, },
"micro-prod-2": { "micro-prod-2": {
@@ -130,6 +135,11 @@ const upgrades = {
"effect": { "effect": {
"type": "prod-2x", "type": "prod-2x",
"target": "micro" "target": "micro"
},
"prereqs": {
"buildings": {
"micro": 10
}
} }
} }
} }

+ 40
- 6
gorge.js Прегледај датотеку

@@ -4,6 +4,8 @@ let belongings = {};


let ownedUpgrades = {}; let ownedUpgrades = {};


let remainingUpgrades = [];

let resources = {}; let resources = {};


let updateRate = 60; let updateRate = 60;
@@ -25,7 +27,6 @@ function productivityOf(type) {
if (!ownedUpgrades[key]) { if (!ownedUpgrades[key]) {
continue; continue;
} }
console.log(value);
if (value.effect.type == "prod-2x") { if (value.effect.type == "prod-2x") {
if (value.effect.target == key) { if (value.effect.target == key) {
baseProd *= 2; baseProd *= 2;
@@ -105,19 +106,27 @@ function spend(cost) {
} }


function displayUpgrades() { function displayUpgrades() {
for (const [key, value] of Object.entries(upgrades)) {
let button = document.querySelector("#upgrade-" + key);
for (let id of remainingUpgrades) {
let button = document.querySelector("#upgrade-" + id);


if (ownedUpgrades[key]) {
if (ownedUpgrades[id]) {
button.style.display = "none"; button.style.display = "none";
return;
continue;
} }
if (canAfford(upgrades[key].cost)) {
if (upgradeAvailable(id)) {
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");
} }
} }

// now we throw out stuff

for (let i = remainingUpgrades.length-1; i >= 0; i--) {
if (ownedUpgrades[remainingUpgrades[i]]) {
remainingUpgrades.splice(i, 1);
}
}
} }


function buyUpgrade(id) { function buyUpgrade(id) {
@@ -195,10 +204,35 @@ function createBuildings() {
} }
} }


function upgradeAvailable(id) {
if (ownedUpgrades[id]) {
return false;
}

if (!canAfford(upgrades[id].cost)) {
return false;
}

for (const [type, reqs] of Object.entries(upgrades[id].prereqs)) {
if (type == "buildings") {
for (const [building, amount] of Object.entries(upgrades[id].prereqs[type])) {
if (belongings[building].count < amount) {
return false;
}
}
}
}

return true;
}

function createUpgrades() { function createUpgrades() {
let container = document.querySelector("#upgrades-list"); let container = document.querySelector("#upgrades-list");


for (const [key, value] of Object.entries(upgrades)) { for (const [key, value] of Object.entries(upgrades)) {

remainingUpgrades.push(key);

let button = document.createElement("div"); let button = document.createElement("div");
button.classList.add("upgrade-button"); button.classList.add("upgrade-button");
button.id = "upgrade-" + key; button.id = "upgrade-" + key;


Loading…
Откажи
Сачувај