From d2f9d3541c4b247dff9de3014323039e4401e0b1 Mon Sep 17 00:00:00 2001 From: sebastian Date: Sun, 15 Feb 2026 19:18:04 +0100 Subject: [PATCH] UPD: Make Building Buttons dependent on BuildingConfigurations --- .../buildingMenu/UiBuildingMenuButton.h | 29 +++++++++++++++---- .../buildingMenu/UiBuildingMenuContainer.cpp | 4 +-- .../UiBuildingMenuCostContainer.h | 4 +-- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/game/ui/components/buildingMenu/UiBuildingMenuButton.h b/src/game/ui/components/buildingMenu/UiBuildingMenuButton.h index 31393da..057530c 100644 --- a/src/game/ui/components/buildingMenu/UiBuildingMenuButton.h +++ b/src/game/ui/components/buildingMenu/UiBuildingMenuButton.h @@ -8,14 +8,17 @@ #include "../../../../engine/core/gui/uiComponent/ClickableUiComponent.h" #include "../../../../engine/core/gui/uiComponent/UiImage.h" #include "../../../../engine/renderer/loader/AssetManager.h" +#include "../../../hexWorld/building/BuildingConfig.h" +#include "../../../hexWorld/building/BuildingDefinition.h" +#include "../../../hexWorld/ecs/components/BuildingComponent.h" class UiBuildingMenuButton :public ClickableUiComponent { public: - UiBuildingMenuButton(const std::string& iconName, LayoutStyle& style, Font& font) : ClickableUiComponent(style) { + UiBuildingMenuButton(const std::string& iconName, LayoutStyle& style, Font& font, BuildingType buildingType) : ClickableUiComponent(style) { LayoutStyle iconStyle; - iconStyle.width = SizeValue(0.75, SizeUnit::Percent); - iconStyle.height = SizeValue(0.75f, SizeUnit::Percent); + iconStyle.width = SizeValue(0.6, SizeUnit::Percent); + iconStyle.height = SizeValue(0.6f, SizeUnit::Percent); getLayoutStyle().width = SizeValue(143, SizeUnit::Pixels); getLayoutStyle().height = SizeValue(200.f, SizeUnit::Pixels); @@ -27,11 +30,25 @@ public: LayoutStyle costContainerStyle; costContainerStyle.width = SizeValue(1.f, SizeUnit::Percent); - costContainerStyle.height = SizeValue(35, SizeUnit::Pixels); + costContainerStyle.height = SizeValue(30, SizeUnit::Pixels); costContainerStyle.margin.top = {10.f, SizeUnit::Pixels}; - auto costContainer = std::make_unique("wood_icon", costContainerStyle, font); - addChild(std::move(costContainer)); + if (buildingType == BuildingType::FOREST_HUT) { + BuildingDefinition def = BuildingConfig::get(BuildingType::FOREST_HUT); + + + } + + for (const auto& [resourceTye, costs] : BuildingConfig::get(buildingType).resourceCosts) { + std::string iconCostName = "background"; + if (resourceTye == RessourceType::WOOD) iconCostName = "wood_icon"; + else if (resourceTye == RessourceType::STONE) iconCostName = "stone_icon"; + + auto costContainer = std::make_unique(iconCostName, costs, costContainerStyle, font); + addChild(std::move(costContainer)); + } + + visualStyles[UiEventType::NONE] = {1.0f, glm::vec3(0.0f), 0.0f}; visualStyles[UiEventType::MOUSE_OVER] = {1.15f, glm::vec3(0.0f), 0.0f}; diff --git a/src/game/ui/components/buildingMenu/UiBuildingMenuContainer.cpp b/src/game/ui/components/buildingMenu/UiBuildingMenuContainer.cpp index 88378bb..2bd0fcd 100644 --- a/src/game/ui/components/buildingMenu/UiBuildingMenuContainer.cpp +++ b/src/game/ui/components/buildingMenu/UiBuildingMenuContainer.cpp @@ -20,7 +20,7 @@ UiBuildingMenuContainer::UiBuildingMenuContainer(Font& font) { LayoutStyle buttonStyle; - auto forest_icon = std::make_unique("forest_hut_icon", buttonStyle, font); + auto forest_icon = std::make_unique("forest_hut_icon", buttonStyle, font, BuildingType::FOREST_HUT); forest_icon->addMouseListener([](const MouseEventData& e) { if (e.isClick(MouseButton::LEFT)) { std::cout << "Forest hut clicked!" << std::endl; @@ -30,7 +30,7 @@ UiBuildingMenuContainer::UiBuildingMenuContainer(Font& font) { LayoutStyle buttonStyle2; - auto stone_icon = std::make_unique("stone_mason_icon", buttonStyle2, font); + auto stone_icon = std::make_unique("stone_mason_icon", buttonStyle2, font, BuildingType::STONE_MASON); stone_icon->addMouseListener([](const MouseEventData& e) { if (e.isClick(MouseButton::LEFT)) { std::cout << "Stone hut clicked!" << std::endl; diff --git a/src/game/ui/components/buildingMenu/UiBuildingMenuCostContainer.h b/src/game/ui/components/buildingMenu/UiBuildingMenuCostContainer.h index 947afab..4334100 100644 --- a/src/game/ui/components/buildingMenu/UiBuildingMenuCostContainer.h +++ b/src/game/ui/components/buildingMenu/UiBuildingMenuCostContainer.h @@ -12,7 +12,7 @@ class UiBuildingMenuCostContainer: public UiComponent { public: - UiBuildingMenuCostContainer(const std::string& resourceIconName, LayoutStyle& style, Font& font) : UiComponent(style) { + UiBuildingMenuCostContainer(const std::string& resourceIconName, int buildingCost, LayoutStyle& style, Font& font) : UiComponent(style) { LayoutStyle iconStyle; iconStyle.width = SizeValue(30, SizeUnit::Pixels); iconStyle.height = SizeValue(30, SizeUnit::Pixels); @@ -27,7 +27,7 @@ class UiBuildingMenuCostContainer: public UiComponent { textStyle.width = SizeValue(123, SizeUnit::Pixels); textStyle.height = SizeValue(30, SizeUnit::Pixels); - auto costText = std::make_unique(font, "13", textStyle, glm::vec3(0.f)); + auto costText = std::make_unique(font, std::to_string(buildingCost), textStyle, glm::vec3(0.f)); addChild(std::move(costText)); } };