diff --git a/src/game/GameMode.cpp b/src/game/GameMode.cpp index b6438ac..401b496 100644 --- a/src/game/GameMode.cpp +++ b/src/game/GameMode.cpp @@ -7,6 +7,7 @@ #include #include +#include "hexWorld/building/BuildingConfig.h" #include "player/Player.h" GameMode::GameMode() { @@ -14,11 +15,14 @@ GameMode::GameMode() { addPlayer(1, "Player 2"); } -bool GameMode::canBuild(PlayerID player, BuildingType buildingType) { - int woodCost = 10; - if (!players[player].getInventory()->hasEnough(RessourceType::WOOD, woodCost)) { - std::cout << "Not enough wood" << std::endl; - return false; +bool GameMode::canBuild(PlayerID player, BuildingType buildingType) const { + + const auto def = BuildingConfig::get(buildingType); + const auto buildingCosts = def.resourceCosts; + for (const auto& [resource, amount] : buildingCosts) { + if (!canAfford(player, resource, amount)) { + return false; + } } return true; } diff --git a/src/game/GameMode.h b/src/game/GameMode.h index dbdfc8d..0a870a1 100644 --- a/src/game/GameMode.h +++ b/src/game/GameMode.h @@ -16,7 +16,7 @@ class GameMode { public: GameMode(); - bool canBuild(EntityID player, BuildingType buildingType); + bool canBuild(EntityID player, BuildingType buildingType) const; bool canAfford(PlayerID player_id, RessourceType ressource, int amount) const;