From ba3c9b374b8e718136f132b4484d555da14d4680 Mon Sep 17 00:00:00 2001 From: arnaucube Date: Sun, 16 Jun 2019 00:04:01 +0200 Subject: [PATCH] allow to build buildings in planet --- .gitignore | 1 + buildings.js | 72 ++++++++++------- calc.js | 106 +++++++++++++------------- images/buildings/alliancedepot.png | Bin 313 -> 2426 bytes images/buildings/crystalmine.png | Bin 313 -> 2282 bytes images/buildings/crystalstorage.png | Bin 313 -> 2804 bytes images/buildings/deuteriummine.png | Bin 313 -> 2088 bytes images/buildings/deuteriumstorage.png | Bin 313 -> 2817 bytes images/buildings/fusionreactor.png | Bin 313 -> 2484 bytes images/buildings/metalmine.png | Bin 313 -> 1618 bytes images/buildings/metalstorage.png | Bin 313 -> 2553 bytes images/buildings/missilesilo.png | Bin 313 -> 1892 bytes images/buildings/ressearchlab.png | Bin 313 -> 2056 bytes images/buildings/roboticsfactory.png | Bin 313 -> 2129 bytes images/buildings/shipyard.png | Bin 313 -> 1874 bytes images/buildings/solarmine.png | Bin 313 -> 1970 bytes images/buildings/spacedock.png | Bin 313 -> 2309 bytes images/crystal.png | Bin 177 -> 282 bytes images/deuterium.png | Bin 177 -> 279 bytes images/energy.png | Bin 177 -> 249 bytes images/metal.png | Bin 177 -> 310 bytes package-lock.json | 61 +++++++++++++++ package.json | 15 ++++ test/calc.test.js | 72 +++++++++++++++++ user.js | 40 +++++----- 25 files changed, 268 insertions(+), 99 deletions(-) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 test/calc.test.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/buildings.js b/buildings.js index 071b8e6..c694e95 100644 --- a/buildings.js +++ b/buildings.js @@ -34,11 +34,11 @@ function printPlanet(planet) { // metalmine document.getElementById("metalmineLevel").innerHTML = "(Level " + planet.Buildings.metalmine + ")"; if (planet.Buildings.metalmine == undefined) { - document.getElementById("btnBuildMetalMine").innerHTML = "Build building"; + document.getElementById("btnBuildMetalMine").innerHTML = `
Build building
`; r = metalmineCost(1); document.getElementById("metalmineResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildMetalMine").innerHTML = "Build level " + (+ (planet.Buildings.metalmine) + + (1)); + document.getElementById("btnBuildMetalMine").innerHTML = `
Build level ` + (+ (planet.Buildings.metalmine) + + (1)) + `
`; r = metalmineCost((+ (planet.Buildings.metalmine) + + (1))); document.getElementById("metalmineResources").innerHTML = printResources(r); } @@ -46,11 +46,11 @@ function printPlanet(planet) { // crystalmine document.getElementById("crystalmineLevel").innerHTML = "(Level " + planet.Buildings.crystalmine + ")"; if (planet.Buildings.crystalmine == undefined) { - document.getElementById("btnBuildCrystalMine").innerHTML = "Build building"; + document.getElementById("btnBuildCrystalMine").innerHTML = `
Build building
`; r = crystalmineCost(1); document.getElementById("crystalmineResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildCrystalMine").innerHTML = "Build level " + (+ (planet.Buildings.crystalmine) + + (1)); + document.getElementById("btnBuildCrystalMine").innerHTML = `
Build level ` + (+ (planet.Buildings.crystalmine) + + (1)) + `
`; r = crystalmineCost((+ (planet.Buildings.crystalmine) + + (1))); document.getElementById("crystalmineResources").innerHTML = printResources(r); } @@ -58,11 +58,11 @@ function printPlanet(planet) { // deuteriummine document.getElementById("deuteriummineLevel").innerHTML = "(Level " + planet.Buildings.deuteriummine + ")"; if (planet.Buildings.deuteriummine == undefined) { - document.getElementById("btnBuildDeuteriumMine").innerHTML = "Build building"; + document.getElementById("btnBuildDeuteriumMine").innerHTML = `
Build building
`; r = deuteriummineCost(1); document.getElementById("deuteriummineResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildDeuteriumMine").innerHTML = "Build level " + (+ (planet.Buildings.deuteriummine) + + (1)); + document.getElementById("btnBuildDeuteriumMine").innerHTML = `
Build level ` + (+ (planet.Buildings.deuteriummine) + + (1)) + `
`; r = deuteriummineCost((+ (planet.Buildings.deuteriummine) + + (1))); document.getElementById("deuteriummineResources").innerHTML = printResources(r); } @@ -70,11 +70,11 @@ function printPlanet(planet) { // energymine document.getElementById("energymineLevel").innerHTML = "(Level " + planet.Buildings.energymine + ")"; if (planet.Buildings.energymine == undefined) { - document.getElementById("btnBuildEnergyMine").innerHTML = "Build building"; + document.getElementById("btnBuildEnergyMine").innerHTML = `
Build building
`; r = energymineCost(1); document.getElementById("energymineResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildEnergyMine").innerHTML = "Build level " + (+ (planet.Buildings.energymine) + + (1)); + document.getElementById("btnBuildEnergyMine").innerHTML = `
Build level ` + (+ (planet.Buildings.energymine) + + (1)) + `
`; r = energymineCost((+ (planet.Buildings.energymine) + + (1))); document.getElementById("energymineResources").innerHTML = printResources(r); } @@ -82,11 +82,11 @@ function printPlanet(planet) { // fusionreactor document.getElementById("fusionreactorLevel").innerHTML = "(Level " + planet.Buildings.fusionreactor + ")"; if (planet.Buildings.fusionreactor == undefined) { - document.getElementById("btnBuildFusionReactor").innerHTML = "Build building"; + document.getElementById("btnBuildFusionReactor").innerHTML = `
Build building
`; r = fusionreactorCost(1); document.getElementById("fusionreactorResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildFusionReactor").innerHTML = "Build level " + (+ (planet.Buildings.fusionreactor) + + (1)); + document.getElementById("btnBuildFusionReactor").innerHTML = `
Build level ` + (+ (planet.Buildings.fusionreactor) + + (1)) + `
`; r = fusionreactorCost((+ (planet.Buildings.fusionreactor) + + (1))); document.getElementById("fusionreactorResources").innerHTML = printResources(r); } @@ -94,11 +94,11 @@ function printPlanet(planet) { // roboticsfactory document.getElementById("roboticsfactoryLevel").innerHTML = "(Level " + planet.Buildings.roboticsfactory + ")"; if (planet.Buildings.roboticsfactory == undefined) { - document.getElementById("btnBuildRoboticsFactory").innerHTML = "Build building"; + document.getElementById("btnBuildRoboticsFactory").innerHTML = `
Build building
`; r = roboticsfactoryCost(1); document.getElementById("roboticsfactoryResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildRoboticsFactory").innerHTML = "Build level " + (+ (planet.Buildings.roboticsfactory) + + (1)); + document.getElementById("btnBuildRoboticsFactory").innerHTML = `
Build level ` + (+ (planet.Buildings.roboticsfactory) + + (1)) + `
`; r = roboticsfactoryCost((+ (planet.Buildings.roboticsfactory) + + (1))); document.getElementById("roboticsfactoryResources").innerHTML = printResources(r); } @@ -106,11 +106,11 @@ function printPlanet(planet) { // shipyard document.getElementById("shipyardLevel").innerHTML = "(Level " + planet.Buildings.shipyard + ")"; if (planet.Buildings.shipyard == undefined) { - document.getElementById("btnBuildShipyard").innerHTML = "Build building"; + document.getElementById("btnBuildShipyard").innerHTML = `
Build building
`; r = shipyardCost(1); document.getElementById("shipyardResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildShipyard").innerHTML = "Build level " + (+ (planet.Buildings.shipyard) + + (1)); + document.getElementById("btnBuildShipyard").innerHTML = `
Build level ` + (+ (planet.Buildings.shipyard) + + (1)) + `
`; r = shipyardCost((+ (planet.Buildings.shipyard) + + (1))); document.getElementById("shipyardResources").innerHTML = printResources(r); } @@ -118,11 +118,11 @@ function printPlanet(planet) { // metalstorage document.getElementById("metalstorageLevel").innerHTML = "(Level " + planet.Buildings.metalstorage + ")"; if (planet.Buildings.metalstorage == undefined) { - document.getElementById("btnBuildMetalStorage").innerHTML = "Build building"; + document.getElementById("btnBuildMetalStorage").innerHTML = `
Build building
`; r = metalstorageCost(1); document.getElementById("metalstorageResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildMetalStorage").innerHTML = "Build level " + (+ (planet.Buildings.metalstorage) + + (1)); + document.getElementById("btnBuildMetalStorage").innerHTML = `
Build level ` + (+ (planet.Buildings.metalstorage) + + (1)) + `
`; r = metalstorageCost((+ (planet.Buildings.metalstorage) + + (1))); document.getElementById("metalstorageResources").innerHTML = printResources(r); } @@ -130,11 +130,11 @@ function printPlanet(planet) { // crystalstorage document.getElementById("crystalstorageLevel").innerHTML = "(Level " + planet.Buildings.crystalstorage + ")"; if (planet.Buildings.crystalstorage == undefined) { - document.getElementById("btnBuildCrystalStorage").innerHTML = "Build building"; + document.getElementById("btnBuildCrystalStorage").innerHTML = `
Build building
`; r = crystalstorageCost(1); document.getElementById("crystalstorageResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildCrystalStorage").innerHTML = "Build level " + (+ (planet.Buildings.crystalstorage) + + (1)); + document.getElementById("btnBuildCrystalStorage").innerHTML = `
Build level ` + (+ (planet.Buildings.crystalstorage) + + (1)) + `
`; r = crystalstorageCost((+ (planet.Buildings.crystalstorage) + + (1))); document.getElementById("crystalstorageResources").innerHTML = printResources(r); } @@ -142,11 +142,11 @@ function printPlanet(planet) { // deuteriumstorage document.getElementById("deuteriumstorageLevel").innerHTML = "(Level " + planet.Buildings.deuteriumstorage + ")"; if (planet.Buildings.deuteriumstorage == undefined) { - document.getElementById("btnBuildDeuteriumStorage").innerHTML = "Build building"; + document.getElementById("btnBuildDeuteriumStorage").innerHTML = `
Build building
`; r = deuteriumstorageCost(1); document.getElementById("deuteriumstorageResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildDeuteriumStorage").innerHTML = "Build level " + (+ (planet.Buildings.deuteriumstorage) + + (1)); + document.getElementById("btnBuildDeuteriumStorage").innerHTML = `
Build level ` + (+ (planet.Buildings.deuteriumstorage) + + (1)) + `
`; r = deuteriumstorageCost((+ (planet.Buildings.deuteriumstorage) + + (1))); document.getElementById("deuteriumstorageResources").innerHTML = printResources(r); } @@ -154,11 +154,11 @@ function printPlanet(planet) { // ressearchlab document.getElementById("ressearchlabLevel").innerHTML = "(Level " + planet.Buildings.ressearchlab + ")"; if (planet.Buildings.ressearchlab == undefined) { - document.getElementById("btnBuildRessearchLab").innerHTML = "Build building"; + document.getElementById("btnBuildRessearchLab").innerHTML = `
Build building
`; r = ressearchlabCost(1); document.getElementById("ressearchlabResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildRessearchLab").innerHTML = "Build level " + (+ (planet.Buildings.ressearchlab) + + (1)); + document.getElementById("btnBuildRessearchLab").innerHTML = `
Build level ` + (+ (planet.Buildings.ressearchlab) + + (1)) + `
`; r = ressearchlabCost((+ (planet.Buildings.ressearchlab) + + (1))); document.getElementById("ressearchlabResources").innerHTML = printResources(r); } @@ -166,11 +166,11 @@ function printPlanet(planet) { // alliancedepot document.getElementById("alliancedepotLevel").innerHTML = "(Level " + planet.Buildings.alliancedepot + ")"; if (planet.Buildings.alliancedepot == undefined) { - document.getElementById("btnBuildAllianceDepot").innerHTML = "Build building"; + document.getElementById("btnBuildAllianceDepot").innerHTML = `
Build building
`; r = alliancedepotCost(1); document.getElementById("alliancedepotResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildAllianceDepot").innerHTML = "Build level " + (+ (planet.Buildings.alliancedepot) + + (1)); + document.getElementById("btnBuildAllianceDepot").innerHTML = `
Build level ` + (+ (planet.Buildings.alliancedepot) + + (1)) + `
`; r = alliancedepotCost((+ (planet.Buildings.alliancedepot) + + (1))); document.getElementById("alliancedepotResources").innerHTML = printResources(r); } @@ -178,11 +178,11 @@ function printPlanet(planet) { // missilesilo document.getElementById("missilesiloLevel").innerHTML = "(Level " + planet.Buildings.missilesilo + ")"; if (planet.Buildings.missilesilo == undefined) { - document.getElementById("btnBuildMissileSilo").innerHTML = "Build building"; + document.getElementById("btnBuildMissileSilo").innerHTML = `
Build building
`; r = missilesiloCost(1); document.getElementById("missilesiloResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildMissileSilo").innerHTML = "Build level " + (+ (planet.Buildings.missilesilo) + + (1)); + document.getElementById("btnBuildMissileSilo").innerHTML = `
Build level ` + (+ (planet.Buildings.missilesilo) + + (1)) + `
`; r = missilesiloCost((+ (planet.Buildings.missilesilo) + + (1))); document.getElementById("missilesiloResources").innerHTML = printResources(r); } @@ -190,11 +190,11 @@ function printPlanet(planet) { // spacedock document.getElementById("spacedockLevel").innerHTML = "(Level " + planet.Buildings.spacedock + ")"; if (planet.Buildings.spacedock == undefined) { - document.getElementById("btnBuildSpacedock").innerHTML = "Build building"; + document.getElementById("btnBuildSpacedock").innerHTML = `
Build building
`; r = spacedockCost(1); document.getElementById("spacedockResources").innerHTML = printResources(r); } else { - document.getElementById("btnBuildSpacedock").innerHTML = "Build level " + (+ (planet.Buildings.spacedock) + + (1)); + document.getElementById("btnBuildSpacedock").innerHTML = `
Build level ` + (+ (planet.Buildings.spacedock) + + (1)) + `
`; r = spacedockCost((+ (planet.Buildings.spacedock) + + (1))); document.getElementById("spacedockResources").innerHTML = printResources(r); } @@ -210,3 +210,19 @@ axios.get(url + "/planets/" + planetid, config).then(function(res) { }).catch(function(error) { console.log(error); }); + + +function buildBuilding(building) { + console.log("build " + building); + const data = { + planetid: planetid, + building: building + } + axios.post(url + "/buildings", data, config).then(function(res) { + console.log("buildings", res.data); + planet = res.data.planet; + printPlanet(planet); + }).catch(function(error) { + console.log(error); + }); +} diff --git a/calc.js b/calc.js index 8bb95d3..0e7e340 100644 --- a/calc.js +++ b/calc.js @@ -7,10 +7,10 @@ function metalmineCost(lvl) { }; // cost = base * 1.5^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 1.5**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 1.5**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 1.5**(lvl-1)); - cost.Energy = Math.round(base.Energy * 1.5**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 1.5**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 1.5**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 1.5**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 1.5**(lvl-1)); return cost; } function crystalmineCost(lvl) { @@ -22,10 +22,10 @@ function crystalmineCost(lvl) { }; // cost = base * 1.6^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 1.6**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 1.6**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 1.6**(lvl-1)); - cost.Energy = Math.round(base.Energy * 1.6**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 1.6**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 1.6**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 1.6**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 1.6**(lvl-1)); return cost; } function deuteriummineCost(lvl) { @@ -37,10 +37,10 @@ function deuteriummineCost(lvl) { }; // cost = base * 1.5^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 1.5**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 1.5**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 1.5**(lvl-1)); - cost.Energy = Math.round(base.Energy * 1.5**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 1.5**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 1.5**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 1.5**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 1.5**(lvl-1)); return cost; } function energymineCost(lvl) { @@ -52,10 +52,10 @@ function energymineCost(lvl) { }; // cost = base * 1.5^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 1.5**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 1.5**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 1.5**(lvl-1)); - cost.Energy = Math.round(base.Energy * 1.5**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 1.5**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 1.5**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 1.5**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 1.5**(lvl-1)); return cost; } function fusionreactorCost(lvl) { @@ -67,10 +67,10 @@ function fusionreactorCost(lvl) { }; // cost = base * 1.8^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 1.8**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 1.8**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 1.8**(lvl-1)); - cost.Energy = Math.round(base.Energy * 1.8**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 1.8**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 1.8**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 1.8**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 1.8**(lvl-1)); return cost; } function roboticsfactoryCost(lvl) { @@ -82,10 +82,10 @@ function roboticsfactoryCost(lvl) { }; // cost = base * 2^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 2**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 2**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 2**(lvl-1)); - cost.Energy = Math.round(base.Energy * 2**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 2**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 2**(lvl-1)); return cost; } function shipyardCost(lvl) { @@ -97,10 +97,10 @@ function shipyardCost(lvl) { }; // cost = base * 2^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 2**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 2**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 2**(lvl-1)); - cost.Energy = Math.round(base.Energy * 2**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 2**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 2**(lvl-1)); return cost; } function metalstorageCost(lvl) { @@ -112,7 +112,7 @@ function metalstorageCost(lvl) { }; // cost = base * 2^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 2**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 2**(lvl-1)); cost.Crystal = 0; cost.Deuterium = 0; cost.Energy = 0; @@ -127,10 +127,10 @@ function crystalstorageCost(lvl) { }; // cost = base * 2^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 2**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 2**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 2**(lvl-1)); - cost.Energy = Math.round(base.Energy * 2**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 2**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 2**(lvl-1)); return cost; } function deuteriumstorageCost(lvl) { @@ -142,10 +142,10 @@ function deuteriumstorageCost(lvl) { }; // cost = base * 2^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 2**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 2**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 2**(lvl-1)); - cost.Energy = Math.round(base.Energy * 2**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 2**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 2**(lvl-1)); return cost; } function ressearchlabCost(lvl) { @@ -157,10 +157,10 @@ function ressearchlabCost(lvl) { }; // cost = base * 1.5^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 1.5**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 1.5**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 1.5**(lvl-1)); - cost.Energy = Math.round(base.Energy * 1.5**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 1.5**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 1.5**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 1.5**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 1.5**(lvl-1)); return cost; } @@ -173,10 +173,10 @@ function alliancedepotCost(lvl) { }; // cost = base * 2^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 2**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 2**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 2**(lvl-1)); - cost.Energy = Math.round(base.Energy * 2**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 2**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 2**(lvl-1)); return cost; } function missilesiloCost(lvl) { @@ -188,10 +188,10 @@ function missilesiloCost(lvl) { }; // cost = base * 2^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 2**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 2**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 2**(lvl-1)); - cost.Energy = Math.round(base.Energy * 2**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 2**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 2**(lvl-1)); return cost; } function spacedockCost(lvl) { @@ -203,9 +203,9 @@ function spacedockCost(lvl) { }; // cost = base * 2^(lvl-1) let cost = {}; - cost.Metal = Math.round(base.Metal * 2**(lvl-1)); - cost.Crystal = Math.round(base.Crystal * 2**(lvl-1)); - cost.Deuterium = Math.round(base.Deuterium * 2**(lvl-1)); - cost.Energy = Math.round(base.Energy * 2**(lvl-1)); + cost.Metal = Math.floor(base.Metal * 2**(lvl-1)); + cost.Crystal = Math.floor(base.Crystal * 2**(lvl-1)); + cost.Deuterium = Math.floor(base.Deuterium * 2**(lvl-1)); + cost.Energy = Math.floor(base.Energy * 2**(lvl-1)); return cost; } diff --git a/images/buildings/alliancedepot.png b/images/buildings/alliancedepot.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..815aa48f2bef52465f9e4b25821b090b5c54c19d 100644 GIT binary patch literal 2426 zcmb7GXH-*L7QR3v6zL_>doct7@jV9{0tpam1QLlv0RX1#zT+2@*5}8YjqV3s zNGR1317pSM31`~?7u0B=vKx0h;&50#{9g|^3d9rA_(fWSH$Y333-v6>%Y?d+%c zoK{iQPKuY!h1n=&mhWc{e0eGN||10!|`_It-?#MO8Q@p*kAZDk-!niGiIY01} zvu9zNl7gV;+BGBh{$*{>vm^yW`J_~vvVozYf)Sotw`Nh~&7~#M6C*5Sk)YxlF!QpUm8JT@zVq(^1 zPP)=Ugf=SO_iJyjxj=06hY!Be($d|tvnm%G4n##o>B8ZUUMM74-mj>zD8`(IXZB7{ zD{X9SU}|3DTE{9JHB?mr$wWw9U0p&_Qqv3jFjBszj!uTPrh1a41rn);t1aSgEshNg zB%mCsTqFUwo}NNTu1%Rb@N4$F=P7P06-7nS0LI)r7K;;yRM*rP6O$}8Zr!@Ysy%w- z$g6w>MaBE;>y*4!eB)&%c*A8!PlA4^hX;T{ppvTP4e+E3kur4KTTCn z69DrI<*chsOinVVr<1Cy;REjjyu7^TCY#B)$*Hy=VG|P*lAj+6tg=Jl2|@MVOue&= z+?AE9ug1rpf|bn7%p{S?w;d`h&}czkUS3A4FzirKU7cuJS{kOxW$EL`I5398$%aQn zT>HGlTxP|Rr&`Q_rJdDD_M^f=<#f8&W1q2d^pzgdlG@te08CI&6IS?Cz(N9cW_&!G zmyd7ghMu%gy0zx3H*Yv&-yl$EMtl2l5fKsmgUPlaJ#?9qyt49ljdKsDLyw;gWHWlc zY=0c`HYUF81A%acK=>^=S(H(DGQ!EfV{b2Vfz5uqI@!Fmw)Sk7)>6qN)oyxvdg8oi zW@boNuO9jFZT=|~d}j`avqzovZIb7Y)IC(vxhB4&%QL~U!seMiaOL^pkBBz zW8kHe#7da(*={0lb4p4 zW1On`V)&riE{j?EZia@2(Uq0DQ?wf@1qB5oAGdY&_4|{Rjx$>O`jC-(9Epa8hS1Fg z!M65x=J@#SqvRP?4GlgJE;sB{uGpzCu~;l;k82#fHkFubOq^h>%ycSvdwYW%>mMz% z)uCd*{nn0-RwPm-ipw6#+gKi}n62BL>xrwZtn3EyD8ynnQ#3IM)=92k#e_MMS$I;%PL~ zL+)KC=4BDGch5LG$4Tip*zq$)YMYxUX^1gqVhZ7Kl~Nfu&hPU@#a0{|J(pn23RA8s^$L zZ))1w+Nufgf_%iUyBg)%alUNpz4HA#Ya`MfcZLeXbQzAZ?_8W7MV8p>6r3c<@05fa&&-;fvGV-9W*y zpgUOzy!pk390Gx$tF0YB(-}bw-`;#bOc4aW%!SeLcx!@Nyidj4yf6tZ6wIdHp&MaO%{l z(CrU0=iJ=%1CAAl8n}1eY;JDm^5+=6n;lb>lk@C(S4^X+fJ!y+@}(t(V%QbQjm6gB z)WF*2a|`6|jMtsFxO`a~tlq@L1Z8c?gwPc!2et>c;2M+3T>A9M>grWQq3Mm}@86?3 zLN|DgjEq1%Z46a<-QV9InelmdcPnsx_!!>Q4Od4%udc4jPJ$}qghcjRt!-&mmTVrM(&F$v9TgRo01Bn3yZdxo*j72VGrY49)N!lA!a^@1 z(Mnla`7v==d32eIV{L8*fc{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/crystalmine.png b/images/buildings/crystalmine.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..1cb5fab26549fca1131373e018732c1d8189e187 100644 GIT binary patch literal 2282 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 diff --git a/images/buildings/crystalstorage.png b/images/buildings/crystalstorage.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..13f56bd4e67bd8d7660d7754ea7c08913cfc0a85 100644 GIT binary patch literal 2804 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 BKr#RT literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/deuteriummine.png b/images/buildings/deuteriummine.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..f4a32caa6c51272a892df65021e8291d5591719e 100644 GIT binary patch delta 2017 zcmZ{ldpy(oAIHDxv51Ihii9Pi33FfTViEeebtZ~aF2m7`i7*573Ul#e-|UMM=`sgd z&;JoTrfkQ)ZgZjB*k=Xtg4%qgAW+rdw$`g!he(s1%M8U+Tcfq-?GWr;$%?Vs<^$)Q zox!0DY1IcKvy!ldoG%**0ZEfjYYRNJ1f|Qh07ms(E&*$r)(Ozom>dwP~0Rb|= z=MPhqbL*|GtqpvJYV0@UtU?2~f8X36)4pC7}?`LMx+uGU=@oH?^|{mX(8(B9W46D=M~9vkz*k1?6rxnO?&Tj9$p@}FPK&eU=lJ-ojWc)`$1~%1KE{g0+810D#f~-1U$nkw|;2!hJtw zv7U5x0)U~RVNbofWmtK0Gn^A6=_$4(`5NzfF*=%7<5`ETd;RVe8wW4QDJ`Y3SP0;_ zon7+%XAfgQN$E&ner~SdY2Lx$kPr%0Fvq)P!7&O94D5UQ6zl1!ibkUqRaH}IG=-#; z6oi3+EVR*!g+E>hFV{CVJ{c&s-1w>$f`V)Y+E;C*+9}f8%Xz_W9v&$$xpn>F?rs>H z&AwAtXMg&%(n))JKj_qrSI**QZtSxUf7_J??iR}8a5(3^h0h9%Zq?T--n)0NZ)hl$ zLfH%m1Ra#V!NHSw{5z2f|K-cgfLqN-Pkm*j?luJlEZf~B_Iyl?Wxk~V`>T*N`%G&dQN=^#Bca%T~!gYwn;)moV)}?hT8lAqK%jFuQ(FD;! z@CXKj0otv=u+UKReoj-sBlmpTXzlIC z<34|cF_}ziW~N!Cqk{w3-b>e1QdXvT)?HxM)otHG*(5J7|M0SKhl1u&qSM0ctTbSC z^%JtFxY)$l_*#LH4+4!I6S4P7Bq0QXv9Yo5j$a&q&G&cIn0=2~oup-FD+=f5QIEpN zMFQ7z|(M&zXVZfnnnK<1^6don{K-@L>gxmU zratD0)aRW!3`Q5$9QV=N@Xg?$0-;GQAt8ZEr`yNIS`$J-?vt1Nb1t8%*g@Akb}}eP z*CLEBqpGTUXM{j}Q@^RowXA2H6EiSjA{pnX8sy1lzzwnf{)p=8>daeHmtGOfFQYYn ztMegQxZVFJ=oB(Rajl|(YOoEN(1a(`*dLANdpCMNw6%2Mu*z(UAdO>C<+V*RH+StP zb`qA^{z?3MZ0fAPoCn(-s>C^o#4>{uIjbNNiFD7WYD_X8f*T1FpGT2ahYl$~p2A=- z-6=#OpZ{}LS65++x^ARHeN~lS^diVl6N!j9ALi!?abH%p>g(&jT%;^7FMn%WI2?t` z#jLKaJ>l_`AOoO{f?~JH%TIMC%bn#!8^$#6_ z10O$$z438GV(secDwRq-Rlz7PFW-2yV$oUx*VH66f30*oaJ#wrH!xt-1c@XLPapI2 z^t>1r2KT=;-5J03$*((oXO9OT`n?}NM(F72dFT1~`Dvp}O?f=tb<$+3_K_nRh{W1j zB);g^H#hs?7&|$*5|7Z-5I%(!N+boDncFUfhiBLMw0Vsrx|U)tdQ8lZ)C7({j_O&4 zs*o3KhC-qI^DRIVlhY+PZ%)q+l@Xhpy*{|QxTIXDv$wI?6gJtK1zin!uA!@%n@FJy zbb8$Ng0);AVMqi5_Ucv6B{hpB$mXM4q@{V|;{zUtuTPF82!z5ks1pV^d9AFhXzA(o z&T}gpIWLNCGWOVQ=tB0+356X+<{|a?UfS-vA}4S$_qITvnw6DIEsU#1;hw*Daa^|@ zlA>uIqd{+yo0rF|t$mJ6&~0;CZ42$#*l*f`i#XbOK9BgnfP(!ERoIU2sQMevDt|EU qhX|tGf8;0ri?+Y?|CfZs&dJ`%SBo(B{hAQW0Y^I*+k05w#D4>aU(Evm literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/deuteriumstorage.png b/images/buildings/deuteriumstorage.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..c14c2be3a77e625c3ba95f5d21a4286c8d39d887 100644 GIT binary patch literal 2817 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 literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/fusionreactor.png b/images/buildings/fusionreactor.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..d3499fc7726151478489951f3d7a9400f7e3832e 100644 GIT binary patch literal 2484 zcma)82T)U68ot!fYnBq=0Rd^!6MAfvKrkYPA{|^n0ZH^>Ac!J@C`geiMQNfjgr-75 z6={nIk%s{vprAonAc;hZbX?r)%h?o;jkU3##sG)$VsbU`p zsYQDF5FIYy@!!ja;t{Mq z$lCf6-K}j=Pc){X=|V>O^i!rID8F-2o`^YGzcVq;@jSB1CM*Fz>714}HP|ngml1qBG4Xl$?!h-4Vy-LsO%z?v*m%KzJtvIyB2iCIPi6~msX~}( zOMd^}Z;H2R_RZH&!4ZwFrqjK!SAOgt`mORv&b@muq=iNA;NYPC$y29f8-uzGzIG>U zh^bf+QeDY?Yx9hDp(IRDP{nb``GJhT%o$UvtNEkou#Jt4r+y8l_eW|P8}}E4j>K}I ze*XTl3JSMgzC=q%Nc2P?;V6_U9*?*F^>ga+itZo#Dmyzn+bf?04kzxW&JE_=NO$+~ zdDY5RzgbzSu3+eMy{1M_4=T33v!kh_Biwp{wIB7OsmUCKJUu-_IAdgYgS#SnE7x*9GhBy zJ-@ro0j}S;MJPX zjlL|APrCB?%W-*O(|H z2M34rjEp||`N=mE6T)fz$y>{;xrqk<&-i#lIeGar&F^x{%CZ&~&Q3*Jq7v3cFc=JY zX$3K;eFkkdJzc~wumhT%oeids8wZw+p3#LXNeF{avH9O)Y$ob`5ogsPQmRKIBlTf0 zm<$ZYC1M{kH4Yxk)U~~)O(v6FTwJc>sHr(Q(v}xKX5F{CU=Po;J|r(GEHE}UR>h3a zxa<1ByY3m`gDnz?4B7v_6I!&)<7Gpnf6>s=5=c%?&UMjtr+QAkNVJm>7Py+2s9PSA zoKzSZ)6atZ4+mF%D3j_8x}HA=50a6R!haRqued`GJO;=@kc-`2v!eGiTl^X#2n6({ zONfupFW-3n97P~>?-}hfOulz^cIH)9f-JrGb;f3WYpXe1o$nulTrO7x;IX<{^Hbd4 z>qG$y3kw_aG%wEf*Uy4RK2NVd!s+kq?&5Gbxvu!tK79g_SZH8ipl4}W#Lv&~qEo=^ zyD3hss_NmjPx0c0hlU>96j#j0>S!e;CAnfSvW$`8VK`vy@8@^V=hnOE$K`gUe7^>r zlP6D#Nk}|Wvx{>lkyCDIGwqi? zyo^A?z;rCgoGmPbQri0Z`i4xvZ1A{t?XYOd(ca!(q`5i#7Y2i&1wd6)j-wyu)q5W- z#p(=$h_tk{D;5h4RX>#ANTpJVKlT&39FAt@fIaE!jAl04LF{JA?%v+O)XYo(|53k& zqT1Tp8VV&1t0RB6u+Tjrp+o634rdS4G&POQcd6PE(*cn3N*0!uV?8~9ayD8_T3Qz< zEG^~0r~3PExK$oLQC?oY-n>Ii`GDu+;|nuYD*LQx5`+c&NEB)bH?c5sA7fl>m#8sw z%G(pCW5>U2Xcr8zNA6n%kL+3W+LqseiV1=8X+tK(#^&Lu+S%wic>Ht=9(fA8 zopFaoLpnM-T9fHCTFAwVGT@&MUD(@R)jIpSgb!%Dx?^q}*pa$8TG{{CXVylmoTVjb zaBEA8{gcVi&82rgwy%OBAS)+lzA*ecO*HPD4NJ&C_xYF)#hw+_#018{m-5u9-gKtp%_7JqqX<$W%1Dw1A!Ix}wZIsAJo^PCKJ=ADPTk#i7BCufOL9$A&MYx_KEu#ma0h2@41a zSSPI4l)Q)>*P+qrnl?7dl9G~7eGEZuh~HdNcB??$USB6JzJuKs3>M6` zAa401568MCsS?sUEvu-Q#^pw>Z*Eq1cB+6Roa%_JQ`%zDed%;Ms8Md=-{TG}J`gCcUcGuERgj);s31Nx zzm|l=a(TR1JE;o2YofhiS_&SkYHPDL!^g*$tbO|yIh23kk-J_5_bnAFCug4~rB)4A z4BKpcb5j#o`O-n!a)`FJN&6@ZB(hCJ2M$wJeYCU`J;otw-*v^1ai^l9Y8isAU@_rr zB-}F(&tNz@lSo$KVPWneAsQHMIULoKmbe#ZUWyHMBVwV?Yx5VY|L7V(Gx2Xj@qb(c i2>+MQ_%kcMr>&R-r4SLd2{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/metalmine.png b/images/buildings/metalmine.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..afec98460b3fc614feb852f140de148bb394853c 100644 GIT binary patch delta 1543 zcmZvceKga19LIm%G16AejY%G|xSopADzt>_`6)F|vCYt3O(=QZH9zyPHgVZfthVI1 zQruatuwqiVh(@^O7DZ&sF*-yZs=2#$u3P8a^ZMiSIiJ`2^UwEu&iD3reXxSfs!#v` zY>w^iV;LBzY%+&{u{33tyE&-b;qK(%m;8KcDAWxL>a@*B8!y=&rz46Hg-q;W!#OME zKiJn>FXgCSKwL-CUND1|*d{1~+s5${Htej)cHWEEY-b0j@jRqULD97n=f*F-F0sQa zjWrBQ;`iRllPWj9k#TjWUOclITq;mUtjXR1Us2O4UIkRNH0D=q{?C2xzEVtD!-=RU zn1?Bbx?D)x_ilOqq)GYJLdS%Jx}F4yL~`{>WND$Jk56~~!X69;R=%mNt!+^dUy)A~ z5jLEEm{neGB#`RarK;w+K==V&W~JJ~Ca_7zqG%li0@3SoRuYLsJGJu|3K;R902h6|uCqXiXxKe6iTtSM>)$xs#{oy1xE?goZ{oL}h);33NDx@?6x-4{7iX z2!H}6W@cwfG^+_BHDGam66xaV8aq8?qhptfxVYVPIvoHs&nct6LpX$n>I1}{D+f$0E!(?_ zENg^9)w2(1(w>rSrlxD7qoeHvaK|gM^gsb&EpR(d`U``BMx#5LsUMD!$?m}+Ax0>a zqo$^&larHRpzGmz;{)|Qot^BgETyA({5)mKJg}PKQ*pkoZV!k+Y}VFR2f}ND>Oa2Y zh)HX<22?!}JqoW;1$JE)t9K@j$DQ`~*WmgXL!r>e{r!-#UPh+Mh8UrIZVug?x-=@+ znjdZ-YtOG~YRVOa-i;v-Q>oMrvDg`h(?M&)3y%nsXHWn!G4Y~wgouyg*(RvL;qaS- zQ*WlHU&=r{seb@>^yssA-uw57e?ED#Bq|uQv384$j3hP;vbfybj~`R-PHMxThDJtV zRO$;V;nT`k2WuOcW*{yJB`YSA2^0!tqrQGV(vr{;(-09I4M%0LSco()wR$#NouO(+ zUA{GOr^qt2P4R$XXzdw^c#E~pdLhoj%Nz7A<@4bK)%ZBU79>&yxEah}oEba25c2e; zh{0si2!i&7x5HsILB1g&TblK=lEzS7`k~09=H}){f`UwdR68{_wV_E{o%OvF@p?Uh z0RcG-H!4-sGi7dOrj#C^l=KdDa^H!%V9d|&VLTqMqr2NBJ{}z&5fMAux)!|`+&kJ^ z<~p4a5fKq)#VO!$Cg%A;SnT&PFPoTUuK6e{D|IrNECg55g7oj@tOOd}tu%!GunK7e z^b~qo)1yat+{$0^n2d(~{wea0DGXH$oUkQ)S9>t8y@9R>{LOh#xSw zu&`~%4mgX&as$1+vmYLtrR4FwexjH2n(@{c%y!`Qrw82vAp_^`h&1@xLE0zP(F{F9<%lY=#td=x& zGh&8>w3(UM+}zwnF3rNkWCW>Oy1n4Wqtg#=c%=Ee!@O2`)YAGH@|UtY|C0FE{*U}t iwYGe-`H$QboCbO7$`8&lHZD+n`GC8#k5jcHG2?GHW8wDz literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/metalstorage.png b/images/buildings/metalstorage.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..3dd85589cccaa850a4736b91175d5e291b6b5d08 100644 GIT binary patch literal 2553 zcmcImc{J4R7yp)RtXZzjJ=)_vi1A`#k5l_qorx_nyz^KKJ2eTMI!x89o32 z1mTvKu7G>^FM)7_tDcw65V-N8EnP4Gz%TYo4gr7VNr6h9P`Hg54}<&2Q5DVdrdcYe zlJj$L4mAx94D=2P1&;t=dfWR(sJE9wm|v)`f(6{>vX{Cy5BOd%{E~@7_=mOp2ulYK zSz3#eEUl>cEdlYyYhcI{T4+Ngq-v@7R3#*-#=YfIQFPTN_$pm&(@`N&UneQTRti`F z=~XY@1l&(PJlq`;Fj6_Py0wglI&&BRHLV{8Z z!qzX?A5~6{o1gb8(ag%qx?JjT`6yRqW#z$kQ{OWqelvUY#+(^D8;d={+Ss6!UM;!o z_B^a{IzS> zpm2G4`A#Zz!reGv;_U9;UUhvvy>R`-3ut6S#0KaB?S}dE2?P9md>=kGH#Qm`o*6B3 z3iJkJ;A{nt*gN{sa*e)&iX-FWjQQ@&uJ`Zbu2)zToR5x?KKQ}LI5;>=WZNGY-oAaC z$^Pc!;N(=dGEJw`rC=z5yV23JpFeY(**_m%0s#5*cb{nP*xA&cw9QKbE7=~PqXdIh zlRTd4tOWS``@>M<n9m~wDtWp9I zKiLpIzTN#BQ_Zn?+1V0_kyTYy0~H>|2r^a>RW0q&62k?bUtH|bTC#&-K3hMbmN`{? zNX^#`K6bq&MzHDnV*)|ZSyjTBYt= zOz1etZE)B`06>_g8r&XMjo> z_0>LiXZa|IO}S^ufzyrBetv#ZXOX~&|L<+>?IFw=6Z}_7@{g-R5e}#Si_T~sWep8l zviKQc5s~}9g8uYL{wD2F$1|g-)!JR?na%!h<8}NV&37N#6U_^Yi#r`rHLmt9E)Uz< zE*ge2f%^J-PeK`MW^J;LSX|64cGCKSy}iit@-k8@2mO8B{WYRqGTv)QSSAD6VW7#kTG>4ko|y#A@>lOGvm3JoNszqSl( zm7ZCR>h<*YK9MLO-S*{+FL^@4qZvI}8kwPO-w?3(LgBm(i9m6er?he!WpT`){hF%DSeEGa1w0~id3 z3j$$XHu?u~uxo28w1G^99Y0R_ohx&`+Nb|14o3y6HrYJd+}w<)^yE^Lup)CNCMFI~ zPUeb>i(?nSWou)j(6Q`}a9&>C4>x*NJkOEhf`S5fS@`DCaEVZyLB`Le+i|hShWqjj zX!V#yQGk{zeRHLk#LL>+ng^S6{+P6wm?@Z2%pR-PmI*rLcgh=JQ^BUcI$9|^6%`=B9MskBa8$*ComEU?-TA)y4@l6Y5A=OEF--r0Gl zM^|?LAwgNL0T0Gw>S9rSW-_YZIP2%q6}ze!Nchj)?eCp$GsLAuMdMD{J$qhNHB>(3 zt39{Dph=xWBgtN&P_h;j%6UZo{H4G^l6!=UOOC05KA6sxI6-a>$BOG|AkcAmJh8Nt zcVS^+q9xXtwKmBE4EWaouKmf@mX;SxO*ytAjgA>b{+W=#jld)(!v%GcO{Jl*$$+y+Ts85%EIF@;3K~o#~5;OaL`F^x~%2V z6r#mrl({*#tgP(XTz`Rae^-}fWO(>F!!J8K8%lUp7tgX&3JUkY-YArbALG>3(a};< zOXJ`c0I7fi?;Sa2*abE>9txDrT60_8j%0lqY+pA?G$+o2&3nx=H#avYJ)Hvb2!!2L z;^0{om1GdXcMtZPR@5^QX|lRO!hjRW^+d#=dp-_#6wwgM3;rT6%gfDUV$Nq|WB{$R z(ToE#s78Yzfk0r+cZ(%%f>fQ{>#Cal^q?F39c)WXkw^tYLqlO1nPi(>omuKbF?Yhx mp?GiO|HokRuPG-~|KJd>YcI+ynp*v9CWD*VUMjzcjQbl6L(fA1 literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/missilesilo.png b/images/buildings/missilesilo.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..569d6f15c24379415e3062cd117b4e14a46e0191 100644 GIT binary patch delta 1819 zcmaJ?d0f)>AEpd75vTJ$s5DekQ(Q)Q5|*e1sCkf0P0SMs@mQsqG{uoek(fy{Q(;~+ z0yQ-}CLZL^pLQ_kJn~4%rSophW2Wv~+kXB2+JEoY=kt87=ktD^N3`>`$}L?*c@PL> z8;bfd$Iwtg!_4F$HB>Ig-JC8z?0y2{b9s3F-UT=B3p!ofUG>TSVc(`(b<~uUV0L4; zr+h4gq*8C8RZHrSzJ>Gj)cG8*eb%+t5fZob%(xcMSNTg}a(p*4i}U>AiJ!yG=5;LJ zrZ^qm)BPs#;{EcUT({9j&n?6kM#rTDt%??8^Ke53=x#M*Ny`&i66{QGW2Ei|t1Fpk z;67CdjwkZ3u@4o10;Uf9ulfKl`#5HrwXwQ*oDF~U=n?MZ!uWdPq0=;1R|U9xD%^dr zHsU$M+A<$PuG3?~Nu!NlS)2k_l=XbZl}5f88Oi?jS8{I=nob`PH8$EY7>r|lzwLxT z63H-SpuzL~vyobArlq-gnnh0}nXGrjk|FM|B9d(MtS>DD+0^*tks zGj4BhSB1f#be{D3*w|QQOLa(QR7{LEsIxoQRKowVVHarmb$70Koz4C{hs`!(s5`;_MG=ICm6ViZhM4@c3=VXKM(~wcfAU zu;({UAN;a@9}0!?lu#S=FD;I_BqoZu4q92@vwST&3=egnb&$Hcx{8Mnu~)A;!rj|} z`)E#OWMs6ljZYO1%w}?zVV3;rnIjwt>8!u zeG>RW&Y=jEfwrlssipN~fbRA@b7HWKo|?Kk58;Z(Lz9w{gh{`Xef<2mA`x&^*I1nJ z-O38LwG}PAz42S@{P5xA%|A5d0=b{#)?QYq9Qd+yv`XXi5FQ(O-*&)C>l)wx(8@K~De?WXfVOE5uO&$`H8BzdhVLh9OH)7=JUvqz4mC0|5(c;J{I0xQwze#*5D1ED zHVl_%8T9q<+5brFqp)7hbmIo6j+%q*3kkr%-<6h<#+nnaXJs8H5LC!ya@pK-%AxcF zbnVSwp6Z8&hlkK;NTf;67Xg;q!^6Wb`uo#o2Ly5)-6n&GKrqqQmqeqfuCK2PhbU`r zry$KiR(AIGvC}UMErOakceWsO@0J|xZK|IY_abo#$=ho&%x?hzh zx$Z0+4!_=VWi`{I$SGr}^EPqm?NpB;iOV84_nv`|1)>h{A?-5Kb z0~;B=y*OnkG&b|T#Z3d-RG|e8LH1Ln_dTv@E>RGaG5@k5%Oy(-yrS;v;<7up8~zQGsp%oDtgHlh zb$++H%G$WMwUtsLjbsqYWg3om0onjj?g$cS?{!KR1ItNBonTaf*O@aFkH3YfDERTu zrVkDd#>(i`)zxku9$kP6BJf9?=IiI+CMHJK)@l-oL=g&g2@He*wB9Nxs6w#d?sLWE z8wC%hrz1hvMybSvK){3malDEXJ-N{|N_C)b8T8yaSa7%%tO5KydyEj=w-3BIN(!-hT(jN4WZ11(TKSrKfMq-vcoSa(5w|c<3CQ`X_qHR3`uc literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/ressearchlab.png b/images/buildings/ressearchlab.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..4bd9e718312d6b3f5f8d92eec0accf983d554080 100644 GIT binary patch delta 1985 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 diff --git a/images/buildings/roboticsfactory.png b/images/buildings/roboticsfactory.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..9da6ca71af621ea8cbc90c2708771e2dac915b92 100644 GIT binary patch delta 2058 zcmZuydpy(YAD?P&p=81|m#vdEj@#HdR7z5W4be7dSPE+_vfOg{N_MbFBe7&`QlgBM zOSOt_#IWNumm{|la!IjrJNbR<_d4hNey`u}`Ro09UZ3are4fwq{=DA}Ya|;l=qSoV zAP}2lxZgO2h6*sudRq0*Q533|m8UOk4Lso`AFw}=!@iarpv)RE^tj_7pWSB|8U4(2 zrD!pJ!*0ra9sT|#?&ritirrir7F*Qa-ZqAvBeByIo67@L?$*D(YHe)|gcfOPYJ#}5v=pWS zk;!E4ut4d^%*=Vjj;NslQC$Az%S)5CrDbJ`YynU#5ClB)Z)|U^?iwCGVr6a3zi~qe zfk4zpPDs(*|TTkNtM@vXZ!Ak zaPsrhW@p3WSHB{rr>ASAUt}^vLqj=TTxin4(&VhH4I^*f9H}O~6E6-mt_|(GqhxAo z+5^-wbp0O09ML#R7%(PQ4mER7kfgH;8+`PQjR-u-tj`T~sde)5O=7XC&#lcK9v)>C6~EkTzx2bk%1S)M$EgwUBxY7tmJ5wGe&r8VN($-CrcImPWq4G)a*?jKB6|X=ouZ;@(QIU5Vxpyu&2iu8 z#ZQ5920Nl>E=GSCXzA>{V1>gSbaG0ATzLETm~JB;kB^vp=Qc4tty$A+LMD@ek*O&Y z9*<{fYx_QYps8uEoWbbmC~gd!Hw3;~&OlC1&eOxgFd-o!z><5ls>&T-Xd9S0_wl2; zzP|nqp)e2pv}%%xCz-r``O63Y#pE%c2O?1^pMT_VJe68pfA8Kw0-@vPXC6=QB$KI8 zhz~|Bv~jVxWl{KWGUUR0;5|Kc&K5%wcAo>+sZ*y+dbAoF8(lC=(@T+hTeP%NeeXw! z>624aDSpD#yu9w4QD$al>l749Dk@roVE4lY?F#z47$9NJwTGC2|K2$%oBi^|-@Kh> zCAfQ6^N+f)0}&CHyxqXVq51&F^8zCyBZ*Y{>skdh0~Bg486cB!)og)Di-n1|UmT## z=kv#>rk-Z%{!}cX%`SXAy0Ek~GV<)43r@E5hFF!8qp@bq8g~jsr4XN5K@>I}vm|#f zFE5vXsYD`CO)Zw|N;`i1Oi@u$W?93)F}FHKf4yY*L5Ork_)Fr-!jWzpM(=Ithrve& zh{SHfQELFMibNvA|6Gdn^7bAcZOt=>XQE9_{d|QOUteENZZ3<@H>7|q=+i?WGC3Ue zr_Y}YzzIR2P_z>#_Pe^O{F<7ojzBPSjLpn8aJgLb0&x||q@FpZ77-CKG%=Ch+3B7- zcRD791Z)Kl?cSBAVT7lKhN^HloU)rYfqek5yDbRIX0yYW=8sQW(K~p%Vm?pl*d;8b zq^B#zFMfi0dwWX{G?y1_OHWH-vC?yLazMs5R!+DAz$3B2WGCO@(N4F^+-NFwj}<)g zb=TGEYKvY`+?V98s}hMMR-pi%x!*2vrT+9aXYBFNP?)2~R!hs@`hsu;KiC0weo~>o zS$liC;1zwezkvzTEQqn=#|7DBcYqcA+2EkR7bbTd6zXhme@6UpN^Feu^zp%*7WsK$ zUJ;;#^{xa$-s8u6z=;4act$lR0rg0vs;cTHEiEJ4Lj3Ray9)~o&DBR=TrDjPY+3Rj z23|H2bN|*g;Jciy7OqrcUgjRwStPFKRg_1(`($?NQ^d%M8E^hzMFvH^Zk+3#i_L3z zsK)W0SK(d0yq8SYL84InS9HFFR@^;#a`o$<(7I)^=4jhkq@SN&?TOdQxd&PO{r&#s z8I+SNs{T3V9l>|NW%Ed{_mHCvB5ruTlTQ4AJ?2+2a56 eP9^9nYDJ+b);zL_x)wBj2*lYDzprvHHThrR&D3cC literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/shipyard.png b/images/buildings/shipyard.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..a0868e7827848f6eecda389c72294b5a8c98cd32 100644 GIT binary patch literal 1874 zcmY*ac{tnI8vZ5JT8vb+;*toXsHIwy5^8HoLZq~op;J;#j3ua6NKr;z`_eYiYAllu zN^6-Eqs9`drem8-tW`yb-Hl}^)v4|N{Bh^%d7pE>=bYy}=lQ;K-uFGJ&P01T8Mq7p z0CIR7_7WKB`&~)`9L>n+J}^k%z~?^jEL zOKJhG--e$L4GyM+go9H6IDeCJEu2C|Mh1lYBkl1{&SXOhxKW}5kF{~7zh4^j!7-N* z?W_E&m+f;K@YzaUswFj^HtD+>iXyECuYO7W%Fp(x|FDf~&x5bjv}O>e4;xe@#pCoM ziX|2@kms=?lBBdcVIV&bo$0W%o5lE^&!w)V&$+Pqs+jtw7Kk3L|%+2G>H)pzYoRtn47#IXW z`BZe9Z&d}6l+&HaV8FCaoX|v}pjA~>rcvuUWo2a(5smfVBoJy~$7aGYVe>s2bc-L~ zRIykp8Ch9{jg6`+0&c=sh|kA6{r&x`K3nZHk7@blJ6mWAb%hG|lY-_u=|(=yBwt@> zsGzC!;Yp7d0sYz`JQDNhyLd54tcy}u<5)|<*5dFP2vSW=ZEbzwGTy;~(bMCMClIoe zk|bK{gM)*i*136kV%~cbtzyRTOqjB=wqK3sk5+NbrktXp^FRkTdK3CHSVqUo;1P02 z2oZ~&ott}FTkF=>*QbR>yZ_=gd3wrlrC1c-q&mU#|`tG90c89cOU(Y2tr&b}9ms;g|#o%UiP?4*(>oM_LTU!^(2OS8645gz-Q^!JbT3c;cZ1&#QH*mNVS9kZW z`T1vb3-x-M=n-%~KR^G;4?`RuqsZma2fe*6DhNc*+S<)tf0M!?(Tr$_gF@ZhT)qlH zo;!CgHb_TL50+`CX_ylfR>9$1tgfkfT3+s`t*uQC40L!uGV;dXq$^2Il^hj?nSgh7 zb&qL4_|F_!Fb8V!Hx5(D_Q;1vpmu!_wd9sMpfHPv(bN_qbRc(d4& zk`h;=KWl@ATsKc0KkSRnOMqI&?Kb`A^W>y21i7@dghEY5H15~v?JbzhA0GBh&B}Uo zxs-Tl<2xRY2ek%y=@#_s4dLCu=1wxKfOtavUVCT^iGFVmftEP0nrx$4&8p^AvsJs|i>frN}+l1DUk#*z$0{1r%U9zoW_4V}ie_LGC zhr{6j0Fn!b!#NAHA3hY0*58_6Sco4Ixm8Y$)PIP#U(yB7e2ocHF$6D^=sSpjSXSnQ^%gb+K%pS z*=<9HT|!EV)W4IHuSZ3}K~?@5^Y>cyTiV(*9^@vOLIJt0@R-GlZxjB&^Si>Go6xk+ z+Fnb6SQGP2HDqOF%g#)X*LYRJ5D3J8ktd7Aa#UyT=JMy5p!6Wf`uchZTljmXDr9Bz zgVd)F8C#9te;PCn*jyg7QDeGK%ZE^@*xR?wvee9zDzDVp7WE=A7(TF%4>?9|i91?l2gP z>PhxJwxm%FsDvklg-|Y++ri__l;VS)gLHTG@DKwE3k&bF+5C&lw_a(5NMmC~Cnu+F z%evi@qM1F*hL={XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/solarmine.png b/images/buildings/solarmine.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..73750743375beff55e14a502f391983f4eabd9d5 100644 GIT binary patch delta 1898 zcmY+Fc{H188^&K@q@{z1wm7x#TCsKPCAAx|1!;w1Y(u0qXqhm)#W052X=$glmWnMZ zYAXpzrs!y?7_^AJR7EW9XdF}K{ifeJpYQz6d7l5Cd%N!E>Vi?l^JR_+0{~zeV#F>` zQi4lqslIc;aSNQzf^bbI+lyX5PHk|mIC_F-2DV4^YlnOuor=hcu!-2cDWw`(7<5I| z+Dz&AAKB;)0jemX?X1?V{7i4_6&vv^tSw=}MYc3F^|rKRSfKdn_ZSY=*v7N>@E)jA zRt6q^t6gEtWwy=@7krqC-X{&0Dl5ag3#*nav#x1MO#}WCnrZ* zUfv!Atz>0of7s>vH2QYrQmu;AE{BJcHM5ij1qEAW=O!mLYF+P31_T6n)Ojr~Evaa@ z{+8by(CaF5>B*-i`!vIgtx>s8In@I5q|T@!Ao{pz%;uI|V+b2T+J7@9yJ zRFlb$*Uj#ey|lG7HTjYI1Sgn+X^bu4=-@D*Fp#{z>jD!L{OTshrC~hl4Y3^2+0{jw z8i3_C71U;tg`3kbkow(c0R6ojuP4y7Z;Un zY;5BC&f*&LXJ-7?c)Wx4|KyjQ*^~ImRT7DWf{n#hcXoF>6A1Mu#Kflh*RGpIM@JWw zmzQhhZLX~$a_m7Bd{dnL{G7LkhZ0cT-aa8_Vrohn<<_d1yNHO1_1`y-e>FFkryD?@ zUts-`nVXxz2t;ErC)71G1b_<5B-@M)S_xC?`{5WHEq++{vQ@A^6--yX# zE%10^a5!8uE48!J1VG2fcX0S*vZia%ilLR26@PCJR6?P|hKGkWQ7C(8;>ya(0FYJr zg2d_S>T+~*JKXqORaF%?WMN@p;({k9^Ja#JT>&&24b0M$M5{(kLj9tmbn(8v3!9r( zOUMV0A4{xHHV?FZKN4tAre|p>hPdeMeR7o{>TPWeW3$=r0Redw3hGu)&clWVQ4)y+ zb|!x|1JDiQFd!&6Sl_?^M)S`zj+zY&2@%rK(aFrtP8%oK5sBQ2!xyGzOh~}8Il@re z$rMU|nc?>);{IeNlbLLOLqHKOE?@lo`EwtaB8>XjtthI2fx)9B?nvEKbL>pOD&wc3 zzpS2uhn5t-uGGOnM?Rn5H#&*{BPSXed?NN+*H>0DGBSjJvmmjJ;#e79 zJ32Wr8ZI@@^LUm^?bO!RXx@w|ai$Xi_3YK!_0H&}{zB8#lgYGmho@g2SzFBfTTV<* zLX3|(v5qo@eL#m@A- zyk}f{uDPy`0WE$(VWGkL>V5mii*;7 zeA_{E6Ap?km_U=?*x1O9)X;f0magmHBLT!5{7oWl&8GnQlg$Csyu7@;I}aWxA`qkD z=Os^_+8r1Q2Fu@@CwwGx>Mq)OR8uI!MsY+U22#+Y3pwvrR@67=dRNz&d+%R8wAtF( zp~^j@(P%$@e1|A3EL?d)PyEDV1nTvH;pdq|qa|j#s03npb#=PmuRHGR8#iu1O1F=V zHEhJ4O-M|P-rEVieC||8NXXW)@@AFGwyK7Pp13Bw8kBj=_M%;MOiUr2PB)cftgWrZ zO;10GC?ay6j_-cRl{5c+dfGSnZ~k}2M*8|5IEtUv($bPe>S{xEwJP*vF<4Ua5E3m^ ze&i(O{@7D!XEtu{?eDXKT3#n#i;8k^bIZFbySu)@<8<>6KJQoV0W;LjdIPBM`=2%) z!ot)s>PQh0k(C})8~$ns#-mv4&cyJF?5`~?`t z9d&i}t<7KH+-r1@P8TX4fj&qjW&YLzD>Z8UbxZI&F862uW{2Ql6=691yEgpj#6*Vk z9n=DUdnr4t*Ch4xD%R7}!_zYj`aC0=^ZYRt#Q8VXrq$TGt>x!P=@Y`-nJy#>g}O{j z_{Q4WI=`eO-M8bK&fU3^OWr#HC0|V9%ZU*RJA(RuUFnM{spuUsC7G1}+0sG$A)x4`Vag2l|ujk literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/buildings/spacedock.png b/images/buildings/spacedock.png index cf3b5f7b210d2b50e439c44abf2899349ce119fc..d9f20b1f52a0e8c6eba1732af1e6c9f993f4821c 100644 GIT binary patch literal 2309 zcmb7GXH-+m8a-TygaAQ`G^wE|h*vHoAVnb|YUnKs3DSZ=2pCa%RjJYwniMZ3N()Fe zB3wWPk)|L>3y2g6MUbk(5(M6Hz5CXCzutQ9$2YTP&zV_!&&;>KlVD|Wi615j0|0>E z7>Bh1``}*zJp#5mB(3*g$8!@$@B;u|;a|Z4lz2qRLdc@@$p{!753_{{slkzkEy@me@-nNTGnFdh9)Mk$;nCAYuAqG>FIGn zAo2zVvQAD;*B4I6?@AwIv`B%Woz{ihOJ6~BW`)-m(!xO8pja*F+5KE!ajt&nG z7rl5PtC|ISS7^{hH@a6#>JifV`lM+3ZcWXZ1T12Cc{vXiw!a(jo1uX0`Qjw8GwFC$ zr8;}FwY4?8qvPYO{G6Pk^mHK@FRuc~Aswg4o}EQQAdpb%ISmbr$GZY00RaIJCV6|C z4h{}}Tl=V&?-&}Y+tk#QX0N7fYHFGoA3xBupYT((tvPTN0Sr%0>U*?(c;<5g(ETt{ zc{%nvg;F)e2j~VYXO7-NN%BLuxR&~McXwe;gM-#EIDGWMm6qT?TJIbdKn`&c5$B8* zh3Xp`N{fpX(|bt60|SP_!oou^Ep_#x$B)&#e0<7MQ{laReM&|~M)mde4`*kI2t-9? z<)fS&@zC9GDh#~p^6F|yVj?Wvq=e+=hKY!XXuqYYp#cS&8XK($1PSm98`Uhu>^Ca% z^62h)Hv1?5%6~L5;UFm`rC4HPtfQkta&=7D zaQ_j(7N6o%FA;$9fQ^;GYT&$P$K#|K%g zoPLkZ%}vtv>t=Ivb85lL&%=LUp7~6df*1RnAqNKs#-~6i{Of{w{{Grjt0_=kTWjUn z>^l#muxcaK)YNc_LgbG&HBQaS?BtY`o~|yBQEyExt%B_agQqH4y#{u*vxVvde*XS3 zj~*!?5C}QZBx^iArlLZXi<|r1%2|-a+0buG%tCKu-a2=-pL9%ro`kgYJo&w2U48v; z0JEXN>*-}XyJb?@#KDh6S>WaTn{49MtI?OJGUzJ1tKs2N*ckAoU;zB_t)=-@fH5EiGMISurA$Rp2uE z<$nClLF=8}-Oz^X<562%zU3oc{{H?mqg7W}%|SJ^q@*MxZ|_qG1qEwc+vuq&XFfRm zA)U^Vo12Tn;buZMsE=J<-0t+4Sm=8|_Vu+{k&rre47Gy%%&NN@s%bk^Z<_r(xsS5H zzrTnyhw=00Z#x)aFu@}G3b5EHUq3(cTxSZ?|Few-5~;|`%e%F+Q`XX=|K1ZB>f+B{ zT+GPG5SEaTNNaA^``CEP$m2%Xrw$&6=ixdDuibnD0!l!26%59ppcxjauWv>sliAD5 zCT?{(UshLDl$9?oLONM2@%j1r!90|AcSlFe+rGY@H*b-As`XD26f z;3NtaFkyy9b8r-~*(7>ZS=l|iYDY%UxP@w#O;FHIOQrH1$G15-IY+%(Eeg-~CGo#V zWccQTz6PZb2n0_uIg&~haDE=107@7h9c>>Q6RWDK!dY61)q{3bUR@oRl*HTH+goJA zD8j4CXTPZn{qEJeIP8gxPffi@B+4fyCf?j)_r%_z9@vI$fXN93e*E~sL#eK={^cYT z3dLc(p+QRng;HYRb=NC;7&2<0ji{^B%*@R{AMEel>GP$}7Vf^XtsDUWKR-YE>QI^G z#@1F8$ioh_5K(7m=itpxka#E}4SM?Y>5XsSVlpy@{_M}D(e54`+}01-;zFa*`rW%D z`nP|I1GQcws#Sq$IOLe#P)omJkJQpa zXlsj2O-)&y6oJBE7*Ee~8jpZL*TBG0Fqt-&M^5qa^V6%V;evvK;!;xB;NV7DzV`@w z=L@Tj)3-?qg+j5IWZ~Vty%5@WpCbfKN@QeYu?>T{{eY5JY*)GHgksbzR5F>F9d3Vs zhiPqT`7TO^v@aMXcG>~Eu&}`X^a&HT{e>R3v&Q58#NhqlAUYu-0fQ=SZ9TU-{laB^ z`qF|8O2^51I+|Mmhe#WkcZO^>S^vG>68>F^|Hlgb|E|!~JLEw9)KFu~ SrJefqe`0*W0$Yu7jrs@IkTrJz literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1SGeyEo=o+oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#F&n?If^bW1oIX%UHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a2!vba4!+xb^mep&$bT2aCei`se1Y&zS^Ys2trJs1Rkc$hF&TONL9gSZ~I~4l!M+ xi;DzxL88i0AW@(cP!uQy6a`8FMQN+yzt|C3=C{fVt2;n`@^tlcS?83{1OOrDX378n diff --git a/images/crystal.png b/images/crystal.png index 707797ea2c2aa73c776aa644f95b210da7f2d306..90cc283d97cd98c1a0a54566c61c68570feaf043 100644 GIT binary patch delta 185 zcmV;q07n0@0h$7kBo78+OGiWi{{a60|De66laV1I2NWkXYk6x1kx49nen~_@R7l6| zRzVKHAPBRB|9_cX7vnO@K(b|=t1VOznAzwH8Lgod8o(`vDkq$14{<<&q;pevN$391 z(_5y#wDyejd#|kCtE*%4LsGck>ith&F;A+p2aqU2W5=d0k2QUc_fs*b+Q{Zcr?WS+ nIuYQugRXVs$!}CbpArWY%J4ZS@sF>d00000NkvXXu0mjfaTrv6 delta 81 zcmbQmw2^Uw%0x3cc42u=#e=<>6Qgx()ID7sLp+YZJj^ lXId@2{`zax-njMuZ|hI7W!7v@x!1%11fH&bF6*2UngFEJ9=`wp diff --git a/images/deuterium.png b/images/deuterium.png index 5d76052757d6ee0cf9c5b76fa5ace550384b4dfc..ea1ac163da3b6cef94fe9d32cc1667dcff150795 100644 GIT binary patch delta 181 zcmV;m080O{0ha=hLI)Hm5y{Q8LuUL-{^(>6{J0uD$UEfd;HHQW- z(V?7uV)6QZyX|oPZv4A+W)^m&=XpE;cdsC;&1cx;7W5VC#HZ+;AChZFs4{%Z_hIFGB9v3D{QTQE`9i{Bcqk)-I-QP iufP6UwKs14|J(XgY?(FNQ|>h}0D-5gpUXO@geCwEm>jGC diff --git a/images/energy.png b/images/energy.png index 8978cbfac42f6242eddbd5f53fb29996646e6cc8..fd4a29ec27d863d805111c79fc0543eb076abd25 100644 GIT binary patch delta 151 zcmV;I0BHZQ0r>%tLI)HmB=J^ft&vGAe{V@dK~zY`?UP*!z#t5Rjr9Ik?hY`WCPZY= z?@{b;8f0dh0O0-j@m~P5bi>+9*yg&iwh-9cRsK+ZUr|>3IFwhPUcNhlknh>D5B>Bk zODf}OShSB@mMiUdmd_fD63ah5)o%IT>oh7HM{T|20b^t;BUK@68UO$Q07*qo1w^hw FV1ji7MfU&z delta 78 zcmey#xRG&!6T7gSS>K+Cq7yxJY}7qn978;gzdg&y%fP_FtgyBIx%A<)j*M2GcV}8H iz5e=Z)!w-E|8MJ0v1Qh5Pr28`00f?{elF{r5}E*z9v+AQ diff --git a/images/metal.png b/images/metal.png index e62b1fbf5e8bcb3b8b737ffa6aac9104b2d9090d..919069e803ea2d6dc83253b3857c77c4cc29393a 100644 GIT binary patch delta 213 zcmV;`04o2n0k#5=Bo78+OGiWi{{a60|De66laV1I2NWkLe|R@Zkx49nnn^@KR7l6g zmQfCXFbG3O)3MTMC6!|Nfkc%pVH?BJ_2~z z8e=Tx;I;H^CC1Jvy*D-!6Bemq-)!kE0&IPhvj1*7-X03CbpsIS-zYT~$7}00n{0&% zcb}L8q?Fk8Q3q!v;Q75U_hvp^v(4XoR9rT{zsfxs0X`3h>zomh-e1iftR7l6|%>fMn00;vhwSVUu!_7ef nI!WD`I;Gd^^?JQtum9UGlsy9}hh*M@00000NkvXXu0mjfu#q0% diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..71f4eb6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,61 @@ +{ + "name": "gogame-frontend", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..72ece38 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "gogame-frontend", + "version": "0.0.1", + "description": "", + "main": "index.js", + "scripts": { + "test": "mocha test/*.test.js" + }, + "author": "", + "license": "ISC", + "dependencies": {}, + "devDependencies": { + "chai": "^4.1.2" + } +} diff --git a/test/calc.test.js b/test/calc.test.js new file mode 100644 index 0000000..0a74120 --- /dev/null +++ b/test/calc.test.js @@ -0,0 +1,72 @@ +const chai = require('chai'); +const calc = require('../calc.js'); + +const {expect} = chai; + +describe('calc', () => { + it('encrypt and decrypt', () => { + // metalmine + expect(60).to.be.equal(calc.metalmineCost(1).Metal); + expect(15).to.be.equal(calc.metalmineCost(1).Crystal); + expect(0).to.be.equal(calc.metalmineCost(1).Deuterium); + expect(0).to.be.equal(calc.metalmineCost(1).Energy); + + expect(90).to.be.equal(calc.metalmineCost(2).Metal); + expect(22).to.be.equal(calc.metalmineCost(2).Crystal); + expect(0).to.be.equal(calc.metalmineCost(2).Deuterium); + expect(0).to.be.equal(calc.metalmineCost(2).Energy); + + expect(17515).to.be.equal(calc.metalmineCost(15).Metal); + expect(4378).to.be.equal(calc.metalmineCost(15).Crystal); + expect(0).to.be.equal(calc.metalmineCost(15).Deuterium); + expect(0).to.be.equal(calc.metalmineCost(15).Energy); + + // crystalmine + expect(48).to.be.equal(calc.crystalmineCost(1).Metal); + expect(24).to.be.equal(calc.crystalmineCost(1).Crystal); + expect(0).to.be.equal(calc.crystalmineCost(1).Deuterium); + expect(0).to.be.equal(calc.crystalmineCost(1).Energy); + + expect(76).to.be.equal(calc.crystalmineCost(2).Metal); + expect(38).to.be.equal(calc.crystalmineCost(2).Crystal); + expect(0).to.be.equal(calc.crystalmineCost(2).Deuterium); + expect(0).to.be.equal(calc.crystalmineCost(2).Energy); + + expect(34587).to.be.equal(calc.crystalmineCost(15).Metal); + expect(17293).to.be.equal(calc.crystalmineCost(15).Crystal); + expect(0).to.be.equal(calc.crystalmineCost(15).Deuterium); + expect(0).to.be.equal(calc.crystalmineCost(15).Energy); + + // deuteriummine + expect(225).to.be.equal(calc.deuteriummineCost(1).Metal); + expect(75).to.be.equal(calc.deuteriummineCost(1).Crystal); + expect(0).to.be.equal(calc.deuteriummineCost(1).Deuterium); + expect(0).to.be.equal(calc.deuteriummineCost(1).Energy); + + expect(337).to.be.equal(calc.deuteriummineCost(2).Metal); + expect(112).to.be.equal(calc.deuteriummineCost(2).Crystal); + expect(0).to.be.equal(calc.deuteriummineCost(2).Deuterium); + expect(0).to.be.equal(calc.deuteriummineCost(2).Energy); + + expect(65684).to.be.equal(calc.deuteriummineCost(15).Metal); + expect(21894).to.be.equal(calc.deuteriummineCost(15).Crystal); + expect(0).to.be.equal(calc.deuteriummineCost(15).Deuterium); + expect(0).to.be.equal(calc.deuteriummineCost(15).Energy); + + // energymine + expect(75).to.be.equal(calc.energymineCost(1).Metal); + expect(30).to.be.equal(calc.energymineCost(1).Crystal); + expect(0).to.be.equal(calc.energymineCost(1).Deuterium); + expect(0).to.be.equal(calc.energymineCost(1).Energy); + + expect(112).to.be.equal(calc.energymineCost(2).Metal); + expect(45).to.be.equal(calc.energymineCost(2).Crystal); + expect(0).to.be.equal(calc.energymineCost(2).Deuterium); + expect(0).to.be.equal(calc.energymineCost(2).Energy); + + expect(21894).to.be.equal(calc.energymineCost(15).Metal); + expect(8757).to.be.equal(calc.energymineCost(15).Crystal); + expect(0).to.be.equal(calc.energymineCost(15).Deuterium); + expect(0).to.be.equal(calc.energymineCost(15).Energy); + }); +}); diff --git a/user.js b/user.js index 741e8ad..292add1 100644 --- a/user.js +++ b/user.js @@ -1,7 +1,7 @@ const token = localStorage.getItem("token"); console.log(token); -if (localStorage.getItem("token")===null) { +if (localStorage.getItem("token") === null) { // redirect to dashboard window.location.href = "/index.html"; } @@ -20,20 +20,24 @@ let config = { let user = {}; // get user data -axios.get(url + "/", config) - .then(function (res) { - console.log(res.data); - user = res.data.user; - console.log(user); - document.getElementById("name").innerHTML = user.Name; - document.getElementById("metal").innerHTML = user.Resources.Metal; - document.getElementById("crystal").innerHTML = user.Resources.Crystal; - document.getElementById("deuterium").innerHTML = user.Resources.Deuterium; - document.getElementById("energy").innerHTML = user.Resources.Energy; - if (localStorage.getItem("mainplanet")===null) { - localStorage.setItem("mainplanet", res.data.user.Planets[0]); - } -}) -.catch(function (error) { - console.log(error); -}); +function getUser() { + axios.get(url + "/", config).then(function(res) { + console.log(res.data); + user = res.data.user; + console.log(user); + document.getElementById("name").innerHTML = user.Name; + + document.getElementById("metal").innerHTML = user.Resources.Metal; + document.getElementById("crystal").innerHTML = user.Resources.Crystal; + document.getElementById("deuterium").innerHTML = user.Resources.Deuterium; + document.getElementById("energy").innerHTML = user.Resources.Energy; + + if (localStorage.getItem("mainplanet") === null) { + localStorage.setItem("mainplanet", res.data.user.Planets[0]); + } + }).catch(function(error) { + console.log(error); + }); +} +getUser(); +setInterval(getUser, 5000);