From 5a0cc4cb10f79261c55c26b028c0745e6762d69b Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Fri, 18 Oct 2019 14:58:02 +0300 Subject: [PATCH] Add smelter --- src/app.cr | 16 +++++++++------- src/game/building.cr | 1 + src/game/building_factory.cr | 24 +++++++++++++++++++++++- src/game/resources.cr | 1 + 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/app.cr b/src/app.cr index aed5bda..10c358d 100644 --- a/src/app.cr +++ b/src/app.cr @@ -88,10 +88,12 @@ class App def render_building_letter(building_type : Game::Building::Type) case building_type - when Game::Building::Type::StartPoint then 'S'.colorize(:yellow) + when Game::Building::Type::StartPoint then 'S'.colorize(:yellow).underline when Game::Building::Type::CrystalMiner then 'M'.colorize(:yellow) - when Game::Building::Type::CrystalRestorer then 'R'.colorize(:yellow) - when Game::Building::Type::Terraformer then 'T'.colorize(:yellow) + when Game::Building::Type::CrystalRestorer then 'R'.colorize(:green) + when Game::Building::Type::OxygenCollector then 'O'.colorize(:yellow) + when Game::Building::Type::Smelter then 'E'.colorize(:magenta) + when Game::Building::Type::Terraformer then 'T'.colorize(:cyan) else ' ' end @@ -131,10 +133,10 @@ class App end def render_resources(world) - printf "Resources:\n Crystals: %5d\n Oxygen: %5d\n Terraformation: %5d\n", - world.resources[Game::Resource::Type::Crystals], - world.resources[Game::Resource::Type::Oxygen], - world.resources[Game::Resource::Type::Terraformation] + printf "Resources:\n" + Game::Resource::Type.each do |t| + printf " %-15s %5d\n", t.to_s + ':', world.resources[t] + end end def render_world(world) diff --git a/src/game/building.cr b/src/game/building.cr index ff5a371..17ccbf7 100644 --- a/src/game/building.cr +++ b/src/game/building.cr @@ -49,6 +49,7 @@ module Game CrystalMiner CrystalRestorer OxygenCollector + Smelter Terraformer end diff --git a/src/game/building_factory.cr b/src/game/building_factory.cr index b4fc0a2..15e1099 100644 --- a/src/game/building_factory.cr +++ b/src/game/building_factory.cr @@ -62,11 +62,32 @@ module Game } ) + add( + Building.new Building::Type::Smelter, **{ + shortcut: "iron", + construction: Construction.new( + ts: 120, + cost: ResourceBag.new({Resource::Type::Crystals => 300}), + requirements: [] of Game::Building::Type + ), + production: Production.new( + ts: 60, + input: ResourceBag.new({ + Resource::Type::Crystals => 20, + Resource::Type::Oxygen => 10, + }), + output: ResourceBag.new({ + Resource::Type::Iron => 10, + }) + ), + } + ) + add( Building.new Building::Type::Terraformer, **{ shortcut: "terr", construction: Construction.new( - ts: 120, + ts: 180, cost: ResourceBag.new({ Resource::Type::Crystals => 300, }), @@ -77,6 +98,7 @@ module Game input: ResourceBag.new({ Resource::Type::Crystals => 50, Resource::Type::Oxygen => 20, + Resource::Type::Iron => 5, }), output: ResourceBag.new({ Resource::Type::Terraformation => 5, diff --git a/src/game/resources.cr b/src/game/resources.cr index 89e190d..cc10a56 100644 --- a/src/game/resources.cr +++ b/src/game/resources.cr @@ -4,6 +4,7 @@ struct Game::Resource enum Type Crystals Oxygen + Iron Terraformation def to_res(amount : Capacity)