From 9f0d1e0f19e2a2180b717092d1988a598619ec62 Mon Sep 17 00:00:00 2001 From: sebastian Date: Sun, 15 Feb 2026 10:36:42 +0100 Subject: [PATCH] ADD: BuildingMenuContainerContainer with(temporary solution to set rootLayout.justifyContent to SpaceBetween) until flexGrowth is supported --- CMakeLists.txt | 2 ++ src/game/UILayer.cpp | 16 ++++++++++++ .../ui/components/UiBuildingMenuContainer.cpp | 26 +++++++++++++++++++ .../ui/components/UiBuildingMenuContainer.h | 18 +++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 src/game/ui/components/UiBuildingMenuContainer.cpp create mode 100644 src/game/ui/components/UiBuildingMenuContainer.h diff --git a/CMakeLists.txt b/CMakeLists.txt index e4b7472..22e17d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,6 +213,8 @@ add_executable(Dicewars_Siedler src/main.cpp src/engine/renderer/model/RenderTargets.h src/engine/renderer/model/GuiTextureBuilder.cpp src/engine/renderer/model/GuiTextureBuilder.h + src/game/ui/components/UiBuildingMenuContainer.cpp + src/game/ui/components/UiBuildingMenuContainer.h ) target_compile_options(Dicewars_Siedler PRIVATE diff --git a/src/game/UILayer.cpp b/src/game/UILayer.cpp index 3dc5779..1279966 100644 --- a/src/game/UILayer.cpp +++ b/src/game/UILayer.cpp @@ -17,6 +17,7 @@ #include "../engine/renderer/model/GUITexture.h" #include "../engine/renderer/model/RenderTargets.h" #include "hexWorld/events/TurnChangedEvent.h" +#include "ui/components/UiBuildingMenuContainer.h" #include "ui/components/UiInventoryContainer.h" #include "ui/components/UiRessourceWidget.h" #include "ui/components/factorys/RessourceWidgetFactory.h" @@ -36,6 +37,7 @@ void UILayer::onAttach() { rootContainer = std::make_unique(); rootContainer->getLayoutStyle().flexDirection = FlexDirection::Column; + rootContainer->getLayoutStyle().justifyContent = JustifyContent::SpaceBetween; Font myFont("/usr/share/fonts/TTF/DejaVuSans.ttf", 48); font = std::make_unique(myFont); @@ -88,6 +90,20 @@ void UILayer::onAttach() { GLuint backgroundTextureID = AssetManager::getTexture("background")->getTextureID(); auto minimap = std::make_unique(minimapTextureID, backgroundTextureID, minimapStyle); rootContainer->addChild(std::move(minimap)); + + float screenHeight = Application::getInstance().getWindow().GetHeight(); + float menuHeight = 200.f; + + auto buildingMenuContainer = std::make_unique(); + auto buildingMenuContainerContainer = std::make_unique(); + buildingMenuContainerContainer->getLayoutStyle().width = SizeValue(1.f, SizeUnit::Percent); + buildingMenuContainerContainer->getLayoutStyle().height = SizeValue(200, SizeUnit::Pixels); + buildingMenuContainerContainer->getLayoutStyle().flexDirection = FlexDirection::Row; + buildingMenuContainerContainer->getLayoutStyle().alignItems = AlignItems::Center; + buildingMenuContainerContainer->getLayoutStyle().justifyContent = JustifyContent::Center; + buildingMenuContainerContainer->addChild(std::move(buildingMenuContainer)); + + rootContainer->addChild(std::move(buildingMenuContainerContainer)); } void UILayer::onUpdate() { diff --git a/src/game/ui/components/UiBuildingMenuContainer.cpp b/src/game/ui/components/UiBuildingMenuContainer.cpp new file mode 100644 index 0000000..3617c4d --- /dev/null +++ b/src/game/ui/components/UiBuildingMenuContainer.cpp @@ -0,0 +1,26 @@ +// +// Created by sebastian on 15.02.26. +// + +#include "UiBuildingMenuContainer.h" + +#include "../../../engine/renderer/loader/AssetManager.h" + +UiBuildingMenuContainer::UiBuildingMenuContainer() { + uiPositioner.getLayout().height = SizeValue(200.f, SizeUnit::Pixels); + uiPositioner.getLayout().width = SizeValue(.6f, SizeUnit::Percent); + uiPositioner.getLayout().flexDirection = FlexDirection::Row; + uiPositioner.getLayout().justifyContent = JustifyContent::Center; + uiPositioner.getLayout().alignItems = AlignItems::Center; +} + +void UiBuildingMenuContainer::onCollectRenderData(UiRenderBundle &uiRenderBundle) { + UiComponent::onCollectRenderData(uiRenderBundle); + + GUITextureBuilder textureBuilder; + textureBuilder = textureBuilder.Foreground(AssetManager::getTexture("background")->getTextureID()); + textureBuilder = textureBuilder.Position(glm::vec2(uiPositioner.screenSpace.x, uiPositioner.screenSpace.y)); + textureBuilder = textureBuilder.Scale(glm::vec2(uiPositioner.screenSpace.width, uiPositioner.screenSpace.height)); + + uiRenderBundle.addGUITexture(std::make_shared(textureBuilder.Build())); +} diff --git a/src/game/ui/components/UiBuildingMenuContainer.h b/src/game/ui/components/UiBuildingMenuContainer.h new file mode 100644 index 0000000..978c1d7 --- /dev/null +++ b/src/game/ui/components/UiBuildingMenuContainer.h @@ -0,0 +1,18 @@ +// +// Created by sebastian on 15.02.26. +// + +#ifndef DICEWARS_SIEDLER_UIBUILDINGMENUCONTAINER_H +#define DICEWARS_SIEDLER_UIBUILDINGMENUCONTAINER_H +#include "../../../engine/core/gui/uiComponent/UiComponent.h" + + +class UiBuildingMenuContainer : public UiComponent { +public: + UiBuildingMenuContainer(); +protected: + void onCollectRenderData(UiRenderBundle &uiRenderBundle) override; +}; + + +#endif //DICEWARS_SIEDLER_UIBUILDINGMENUCONTAINER_H \ No newline at end of file