diff --git a/src/game/GameLayer.cpp b/src/game/GameLayer.cpp index 49c644f..71667be 100644 --- a/src/game/GameLayer.cpp +++ b/src/game/GameLayer.cpp @@ -105,9 +105,11 @@ void GameLayer::onUpdate() turnSystem->nextTurn(*turnState, Application::getInstance().getEventBus()); } - if (InputManager::isKeyPressed(GLFW_KEY_U)) { - auto modelStateComponent = entityManager->getComponent(testEntity); - modelStateComponent->params["fillRatio"] += 0.1f; + + if (gameInputUser->isKeyboardEnabled()) { + if (Application::getInstance().keyboard->keyPressEvent(GLFW_KEY_U)) { + gameMode->setUpgradeMode(!gameMode->isUpgradeMode()); + } } AnimationSystem::update(*entityManager, EngineTime::totalTime); @@ -115,7 +117,9 @@ void GameLayer::onUpdate() if (gameInputUser->isMouseEnabled()) { tileHighlightSystem->update(*entityManager, *mousePicker, *camera, *gameMode); SelectionSystem::update(*entityManager, *gameInputUser, *mousePicker); - UpgradeSystem::tryUpdate(*entityManager, *gameMode, gameMode->getCurrentPlayer(), *turnState); + if (gameMode->isUpgradeMode()) { + UpgradeSystem::tryUpdate(*entityManager, *gameMode, gameMode->getCurrentPlayer(), *turnState); + } } else { tileHighlightSystem->reset(*entityManager); } diff --git a/src/game/GameMode.cpp b/src/game/GameMode.cpp index 565c8b1..d8d5cac 100644 --- a/src/game/GameMode.cpp +++ b/src/game/GameMode.cpp @@ -83,4 +83,12 @@ glm::vec3 GameMode::getColorOfPlayer(PlayerID playerID) { return players[playerID].getColor(); } +void GameMode::setUpgradeMode(bool upgradeMode) { + this->upgradeMode = upgradeMode; +} + +bool GameMode::isUpgradeMode() const { + return upgradeMode; +} + diff --git a/src/game/GameMode.h b/src/game/GameMode.h index c48f6df..00a2d53 100644 --- a/src/game/GameMode.h +++ b/src/game/GameMode.h @@ -40,9 +40,14 @@ public: void addResource(PlayerID uint32, RessourceType ressource, int get_storage); glm::vec3 getColorOfPlayer(PlayerID playerID); + void setUpgradeMode(bool upgradeMode); + bool isUpgradeMode() const; + private: std::unordered_map players; std::optional activeBuilding; + + bool upgradeMode = false; }; diff --git a/src/game/hexWorld/building/BuildingFactory.cpp b/src/game/hexWorld/building/BuildingFactory.cpp index 305f4df..82b36be 100644 --- a/src/game/hexWorld/building/BuildingFactory.cpp +++ b/src/game/hexWorld/building/BuildingFactory.cpp @@ -35,6 +35,7 @@ EntityID BuildingFactory::create(EntityManager &em, const BuildingDefinition &de auto modelStateComponent = std::make_shared(); modelStateComponent->params["fillRatio"] = 0.f; + modelStateComponent->params["level"] = 1.f; auto producingComponent = std::make_shared( ProducingComponent(def.produces, def.baseAmountPerTurn, false)); producingComponent->setMaxStorage(def.maxStorage); diff --git a/src/game/hexWorld/ecs/systems/SelectionSystem.cpp b/src/game/hexWorld/ecs/systems/SelectionSystem.cpp index fed4ff1..ac48702 100644 --- a/src/game/hexWorld/ecs/systems/SelectionSystem.cpp +++ b/src/game/hexWorld/ecs/systems/SelectionSystem.cpp @@ -17,6 +17,7 @@ void SelectionSystem::update(EntityManager &em, GameInputUser& input, MousePicke if (!input.isMouseEnabled()) return; if (!Application::getInstance().mouse->isButtonDown(MouseButton::LEFT)) { + selectedEntity = 0; return; } @@ -31,8 +32,4 @@ void SelectionSystem::update(EntityManager &em, GameInputUser& input, MousePicke } } - if (Application::getInstance().mouse->isReleaseEvent(MouseButton::LEFT)) { - selectedEntity = 0; - } - } \ No newline at end of file