ADD: BuildingMenuContainerContainer with(temporary solution to set rootLayout.justifyContent to SpaceBetween) until flexGrowth is supported

This commit is contained in:
sebastian 2026-02-15 10:36:42 +01:00
parent b3ad023729
commit 9f0d1e0f19
4 changed files with 62 additions and 0 deletions

View File

@ -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

View File

@ -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<UiContainer>();
rootContainer->getLayoutStyle().flexDirection = FlexDirection::Column;
rootContainer->getLayoutStyle().justifyContent = JustifyContent::SpaceBetween;
Font myFont("/usr/share/fonts/TTF/DejaVuSans.ttf", 48);
font = std::make_unique<Font>(myFont);
@ -88,6 +90,20 @@ void UILayer::onAttach() {
GLuint backgroundTextureID = AssetManager::getTexture("background")->getTextureID();
auto minimap = std::make_unique<UiImage>(minimapTextureID, backgroundTextureID, minimapStyle);
rootContainer->addChild(std::move(minimap));
float screenHeight = Application::getInstance().getWindow().GetHeight();
float menuHeight = 200.f;
auto buildingMenuContainer = std::make_unique<UiBuildingMenuContainer>();
auto buildingMenuContainerContainer = std::make_unique<UiContainer>();
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() {

View File

@ -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<GUITexture>(textureBuilder.Build()));
}

View File

@ -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