diff --git a/design/overview.md b/design/overview.md new file mode 100644 index 0000000..51354fb --- /dev/null +++ b/design/overview.md @@ -0,0 +1,40 @@ +# Gorge + +Gorge is an idle game but with vore + +lol + +## Resources + +* Food: Base currency + +## Buildings + +Buildings are bought with *food* + +Each tier of building: + +* costs more than the previous tier of buildings +* produces food proportional to its cost + +The cost for a building is: + +$$1.02^{\textrm{count}} \times \textrm{base cost}$$ + +### Upgrades + +There are several categories of upgrades for buildings: + +#### Productivity + +All buildings have productivity upgrades. Each upgrade doubles production. + +#### Synergy + +Some buildings have synergy upgrades. Each upgrade causes buildings of one type to enhance buildings of another type. + +## Height + +Growth can be purchased with *food* + +Each growth reduces the cost of buildings and unlocks new tiers of buildings. diff --git a/gorge.css b/gorge.css new file mode 100644 index 0000000..31b4a2e --- /dev/null +++ b/gorge.css @@ -0,0 +1,30 @@ +body { + font-family: Sans-Serif; +} + +body.dark { + background: #111; + color: #eee; +} + +#buildings-area { + width: 20%; +} + +#tasty-micro { + color: #ddd; + background-color: #211; + width: 100px; + height: 75px; +} +#buildings-area button { + display: block; + width: 100%; + height: 50px; + background-color: #222; + color: #eee; +} + +#buildings-area button:not(:last-child) { + +} diff --git a/gorge.html b/gorge.html index 9302650..b2fb857 100644 --- a/gorge.html +++ b/gorge.html @@ -4,7 +4,7 @@ Gorge - + @@ -17,6 +17,16 @@ - + +
Resources
Food: 0
+ +
+
Buildings
+ + + + + +
diff --git a/gorge.js b/gorge.js index 8127928..139b011 100644 --- a/gorge.js +++ b/gorge.js @@ -8,23 +8,6 @@ let resources = { let updateRate = 60; -// setup stuff lol - -// we'll initialize the dict of buildings we can own - -function setup() { - for (const [key, value] of Object.entries(buildings)) { - belongings[key] = {}; - belongings[key].count = 0; - } - - console.log(belongings) -} - -function price(type) { - return buildings[type].cost * Math.pow(1.02, belongings[type].count) -} - function calculateProductivity() { let productivity = 0; for (const [key, value] of Object.entries(belongings)) { @@ -41,11 +24,29 @@ function productivityOf(type) { return baseProd * belongings[type].count; } +function costOf(type) { + let baseCost = buildings[type].cost + + let countCost = baseCost * Math.pow(1.02, belongings[type].count); + + return countCost; +} + +function buyBuilding(type) { + let cost = costOf(type); + + if (resources.food > cost) { + belongings[type].count += 1; + resources.food -= cost; + } + +} // update stuff function updateResources() { addResources(); displayResources(); + displayBuildings(); setTimeout(updateResources, 1000/updateRate); } @@ -58,6 +59,42 @@ function displayResources() { document.getElementById("resource-food").innerText = "Food: " + render(resources.food); } +function displayBuildings() { + for (const [key, value] of Object.entries(belongings)) { + document.getElementById("building-" + key).innerText = buildings[key].name + ": " + belongings[key].count; + } +} + +function eatMicro() { + resources.food += 1; +} +// setup stuff lol + +// we'll initialize the dict of buildings we can own + +function setup() { + initializeData(); + registerListeners(); + + console.log(belongings) +} + +function initializeData() { + for (const [key, value] of Object.entries(buildings)) { + belongings[key] = {}; + belongings[key].count = 0; + } +} + +function registerListeners() { + document.querySelectorAll(".building-button").forEach(function(button) { + let id = button.id.replace("building-", ""); + button.addEventListener("click", function() { buyBuilding(id); }); + }); + + document.querySelector("#tasty-micro").addEventListener("click", eatMicro); +} + window.onload = function() { setup();