From 9a05a0c854ce5486335a8f5e908e223df7ad7da2 Mon Sep 17 00:00:00 2001 From: sebastian Date: Fri, 13 Feb 2026 08:40:39 +0100 Subject: [PATCH] ADD: RessourceWidgets (more or less working) --- CMakeLists.txt | 2 + assets/ui/ressource-icons/granite.png | Bin 0 -> 34200 bytes assets/ui/ressource-icons/wood-log.png | Bin 0 -> 55280 bytes .../gui/uiComponent/layout/UiPositioner.cpp | 47 +++++++++++----- .../gui/uiComponent/layout/UiPositioner.h | 2 + src/game/UILayer.cpp | 50 +++++++++++++++--- src/game/UILayer.h | 1 + src/game/ui/components/UiRessourceWidget.cpp | 21 ++++++++ src/game/ui/components/UiRessourceWidget.h | 22 ++++++++ 9 files changed, 124 insertions(+), 21 deletions(-) create mode 100644 assets/ui/ressource-icons/granite.png create mode 100644 assets/ui/ressource-icons/wood-log.png create mode 100644 src/game/ui/components/UiRessourceWidget.cpp create mode 100644 src/game/ui/components/UiRessourceWidget.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 4321675..ec85778 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,6 +147,8 @@ add_executable(Dicewars_Siedler src/main.cpp src/engine/core/gui/uiComponent/UiButton.h src/engine/renderer/model/GUIText.cpp src/engine/renderer/model/GUIText.h + src/game/ui/components/UiRessourceWidget.cpp + src/game/ui/components/UiRessourceWidget.h ) target_include_directories(Dicewars_Siedler PRIVATE diff --git a/assets/ui/ressource-icons/granite.png b/assets/ui/ressource-icons/granite.png new file mode 100644 index 0000000000000000000000000000000000000000..e20c14e2f8b22eb0fddfc8a5dcfa4ab04595aa28 GIT binary patch literal 34200 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ƨ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 literal 0 HcmV?d00001 diff --git a/assets/ui/ressource-icons/wood-log.png b/assets/ui/ressource-icons/wood-log.png new file mode 100644 index 0000000000000000000000000000000000000000..9022cb92244effdfffabdf23ba97f779231fb1cc GIT binary patch literal 55280 zcmeEtWmg8A(wXMdYjG`~dd)W0I5Dy*8;WoQC0%a(M?DMe4n~Win3znsyjf50{z_*t~W? zpjV}eyNzH6P&sl+<6YgXk^QZ@NFnc%WsMypGj?PeI~L2Cq>#*{=t52)3;fw30Hn|Z z*#ZqBdZ&9W#YQ|{j>7G>n<-K8(^;f$C zN>(%!AURq+I=|UO+*`f5cEmhP5dEV{b!`zvPgS)h$4nYDk^tJhTs0^V&O04WMEGws z*bQ#{28g}s3yya2ron)x!H4neY>IK%YdlwACJ4E}!qfl4tA?0+TNMzO2W3yen$w7- zEiM-O?Mlk?`PSr^!opt_U|j38bRH@~e$8l(T$oZPxvcY;32^z;!ssrb% zpiq;OjEEE%5O(y0-17d}uiatNPYMKNtyqHy8F7LcicIII+D=bgH&gAbp;sLn{R;v( zS5UJ)GXNB@L3oKtkCUoQY)Z5*Y8zm00Og+0HCo@bWGAg=1m4LM59d$ z@=O<1k&uYXN0BV>kXE5N8AKG{{AuTLnl3yM;)#PMK^U4YlbtTBB0-(fcv!{u-SGe) z=D+PL$x* zM53aO3KTMs2!UsL(3E3D#FponzLr8CF> z%q4HsdsJQ6qh`n-eFJ6qPl-2DI5)|*;R=gNq=i20K1|`YokI|evThETe zq@Fbs?rKO9>}^i`OW30*NWf8D3;UUGs_Pp%klo<_(^x)+#k7BMI_=SU5 z<9oRso!7Yx?jXd53gYM$gzDq4<0JIwOf@>iB!DY4rC;B6p_4mWER`2MFw3N>gi;O^stE zFbK>!Z!$OW9<`DQU?c)Z0flH$BRmQKLk3R47>LQWU98ygduAAZNeN(nzSv4lnKshk zb<-yo*8*caJ$L=N{AX%D7*Rh5sPj5!%VWT_>3gJVr509=$Bmz0@hoZ?_Z1Vh={I&k zXO<9A86MQOZ1j1w>gR37%&_u6aYQ(wE#HUz>OtRmH^xf_KZG!Sd)agE=;X0^gyQ$u zR_C@|5%%gL$FGf_Ub~w#j_sq96Ad?41+b~|EK9NB&Rl3zOK3PFp`gtIN&F}25RF;p zZItHBTCC|=JWf!%k3>CFxb_Lu#FjhK8 zcF}DTE#QJ=gd{lEOx8*~I~xevODs@QJbN2}y0Lhj-UCjB=#5vTVt{ekX5AEwMS+kM zzl3)lN?mJ)P5Pt{zWw2Ky=nLt9kxQG`>Q)Q+4~?F0!wFJ*$n<*l-W$99NR2{*rMTa*Mj-!rXw>bE;9lh4!V%KSp>#)|r^JAMiuwX~oFSEI6R;5${2f(Sr z6L-2axZ_#5^CjO{60zNP;H;|J7c=TWGolDcc2h_OQ~{Xb^2sr-!6WmEt<7?-h>70^ zSI*T^_yi#·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 qU3&&94uZ(?-^YJ3_uiPositioner.compute(screenSpace); } + float totalChildrenMainSize = 0.0f; // 3a. Gesamtgröße der Kinder berechnen (inkl. Top/Left Margins) for (auto& child : uiComponent.children) { @@ -63,6 +66,7 @@ void UiPositioner::compute(const Dimensions &parent) { } + // 3. Kinder rekursiv positionieren float currentMainOffset = justifyOffset; bool first = true; @@ -72,13 +76,13 @@ void UiPositioner::compute(const Dimensions &parent) { } if (style.flexDirection == FlexDirection::Column) { - child->uiPositioner.screenSpace.y = screenSpace.y + currentMainOffset; + child->uiPositioner.offsetPosition(0.f,currentMainOffset); currentMainOffset += child->uiPositioner.screenSpace.height; - currentMainOffset += child->uiPositioner.resolve(child->uiPositioner.style.margin.top, parent.height, screenHeight); + currentMainOffset += child->uiPositioner.resolve(child->uiPositioner.style.margin.top, screenSpace.height, screenHeight); } else { - child->uiPositioner.screenSpace.x += currentMainOffset; + child->uiPositioner.offsetPosition(currentMainOffset,0.f); currentMainOffset += child->uiPositioner.screenSpace.width; - currentMainOffset += child->uiPositioner.resolve(child->uiPositioner.style.margin.left, parent.width, screenWidth); + currentMainOffset += child->uiPositioner.resolve(child->uiPositioner.style.margin.left, screenSpace.width, screenWidth); } first = false; @@ -91,18 +95,16 @@ void UiPositioner::compute(const Dimensions &parent) { float remainingCrossSpace = screenSpace.width - child->uiPositioner.screenSpace.width ; switch (style.alignItems) { case AlignItems::Start: - child->uiPositioner.screenSpace.x = screenSpace.x + marginLeft; + child->uiPositioner.updatePosition(screenSpace.x + marginLeft, child->uiPositioner.screenSpace.y); break; case AlignItems::Center: - child->uiPositioner.screenSpace.x = - screenSpace.x + remainingCrossSpace / 2.0f + marginLeft; + child->uiPositioner.updatePosition(screenSpace.x + remainingCrossSpace / 2.0f + marginLeft, child->uiPositioner.screenSpace.y); break; case AlignItems::End: - child->uiPositioner.screenSpace.x = screenSpace.x + remainingCrossSpace + marginLeft; + child->uiPositioner.updatePosition(screenSpace.x + remainingCrossSpace + marginLeft, child->uiPositioner.screenSpace.y); break; - default: break; } @@ -111,17 +113,15 @@ void UiPositioner::compute(const Dimensions &parent) { float marginTop = child->uiPositioner.resolve(child->uiPositioner.style.margin.top,screenSpace.height,screenHeight); switch (style.alignItems) { case AlignItems::Start: - child->uiPositioner.screenSpace.y = screenSpace.y + marginTop; + child->uiPositioner.updatePosition(child->uiPositioner.screenSpace.x, screenSpace.y + marginTop); break; case AlignItems::Center: - child->uiPositioner.screenSpace.y = - screenSpace.y + remainingCrossSpace / 2.0f + marginTop; + child->uiPositioner.updatePosition(child->uiPositioner.screenSpace.x, screenSpace.y + remainingCrossSpace / 2.0f + marginTop); break; case AlignItems::End: - child->uiPositioner.screenSpace.y = - screenSpace.y + remainingCrossSpace + marginTop; + child->uiPositioner.updatePosition(child->uiPositioner.screenSpace.x, screenSpace.y + remainingCrossSpace + marginTop); break; default: @@ -130,6 +130,7 @@ void UiPositioner::compute(const Dimensions &parent) { } } + } LayoutStyle & UiPositioner::getLayout() { @@ -152,4 +153,22 @@ float UiPositioner::resolve(const SizeValue &size, float parentSize, float axisL } } +void UiPositioner::offsetPosition(float dx, float dy) { + screenSpace.x += dx; + screenSpace.y += dy; + + for (auto& child : uiComponent.children) { + child->uiPositioner.offsetPosition(dx, dy); + } +} + +void UiPositioner::updatePosition(float newX, float newY) { + screenSpace.x = newX; + screenSpace.y = newY; + + for (auto& child : uiComponent.children) { + child->uiPositioner.updatePosition(newX, newY); + } +} + diff --git a/src/engine/core/gui/uiComponent/layout/UiPositioner.h b/src/engine/core/gui/uiComponent/layout/UiPositioner.h index fa2be2c..7610f8d 100644 --- a/src/engine/core/gui/uiComponent/layout/UiPositioner.h +++ b/src/engine/core/gui/uiComponent/layout/UiPositioner.h @@ -27,6 +27,8 @@ private: LayoutStyle style; float resolve(const SizeValue &size, float parentSize, float axisLength); + void offsetPosition(float dx, float dy); + void updatePosition(float newX, float newY); }; diff --git a/src/game/UILayer.cpp b/src/game/UILayer.cpp index d0b4f77..7c1431e 100644 --- a/src/game/UILayer.cpp +++ b/src/game/UILayer.cpp @@ -13,6 +13,7 @@ #include "../engine/core/gui/uiComponent/UiText.h" #include "../engine/renderer/loader/Loader.h" #include "../engine/renderer/model/GUITexture.h" +#include "ui/components/UiRessourceWidget.h" UILayer::UILayer() { Loader& loader = Loader::instance(); @@ -24,10 +25,8 @@ void UILayer::onAttach() { Layer::onAttach(); - rootContainer = std::make_unique(); - LayoutStyle& rootLayout = rootContainer->getLayoutStyle(); - rootLayout.justifyContent = JustifyContent::End; + rootContainer->getLayoutStyle().flexDirection = FlexDirection::Row; auto imageStyle = LayoutStyle(); imageStyle.width = SizeValue(0.25f, SizeUnit::Percent); @@ -46,9 +45,9 @@ void UILayer::onAttach() { ); auto image3 = std::make_unique( - Loader::instance().loadTextureFromFile("assets/textures/texture.png").getTextureID(), - imageStyle -); + Loader::instance().loadTextureFromFile("assets/textures/texture.png").getTextureID(), + imageStyle + ); Font myFont("/usr/share/fonts/TTF/DejaVuSans.ttf", 48); font = std::make_unique(myFont); @@ -60,7 +59,44 @@ void UILayer::onAttach() { std::cout << "Button Clicked!" << std::endl; }); - rootContainer->addChild(std::move(button)); + //rootContainer->addChild(std::move(button)); + + auto inventoryContainer = std::make_unique(); + inventoryContainer->getLayoutStyle().flexDirection = FlexDirection::Row; + inventoryContainer->getLayoutStyle().width = SizeValue(300.f, SizeUnit::Pixels); // Platz für mehrere Ressourcen + inventoryContainer->getLayoutStyle().height = SizeValue(60.f, SizeUnit::Pixels); + inventoryContainer->getLayoutStyle().margin.left = {100.f, SizeUnit::Pixels}; + inventoryContainer->getLayoutStyle().alignItems = AlignItems::Center; + + smallFont =std::make_unique("/usr/share/fonts/TTF/DejaVuSans.ttf", 18); + LayoutStyle iconStyle; + iconStyle.width = SizeValue(60.f, SizeUnit::Pixels); + iconStyle.height = SizeValue(60.f,SizeUnit::Pixels); + + LayoutStyle textStyle; + textStyle.margin.top = {2.f, SizeUnit::Pixels}; + textStyle.width = SizeValue(1.f, SizeUnit::Percent); + textStyle.height = SizeValue(30.f, SizeUnit::Percent); // Rest für Text + + LayoutStyle containerStyle; + containerStyle.width = SizeValue(60.f, SizeUnit::Pixels); // genug Platz für Icon + Text + containerStyle.height = SizeValue(60.f, SizeUnit::Pixels); + containerStyle.flexDirection = FlexDirection::Column; + containerStyle.alignItems = AlignItems::Center; // ganz wichtig für horizontale Zentrierung + + LayoutStyle container2Style; + container2Style.width = SizeValue(60.f, SizeUnit::Pixels); // genug Platz für Icon + Text + container2Style.height = SizeValue(60.f, SizeUnit::Pixels); + container2Style.flexDirection = FlexDirection::Column; + container2Style.alignItems = AlignItems::Center; // ganz wichtig für horizontale Zentrierung + container2Style.margin.left = {10.f, SizeUnit::Pixels}; + + auto wood_widget = std::make_unique(Loader::instance().loadTextureFromFile("assets/ui/ressource-icons/wood-log.png").getTextureID(), 10, *smallFont, containerStyle, iconStyle, textStyle); + auto stone_widget = std::make_unique(Loader::instance().loadTextureFromFile("assets/ui/ressource-icons/granite.png").getTextureID(), 1139, *smallFont, containerStyle, iconStyle, textStyle); + + rootContainer->addChild(std::move(wood_widget)); + rootContainer->addChild(std::move(stone_widget)); + } void UILayer::onUpdate() { diff --git a/src/game/UILayer.h b/src/game/UILayer.h index 1084f46..fd7a8d9 100644 --- a/src/game/UILayer.h +++ b/src/game/UILayer.h @@ -18,6 +18,7 @@ private: std::unique_ptr guiRenderer; std::unique_ptr textRenderer; std::unique_ptr font; + std::unique_ptr smallFont; std::unique_ptr rootContainer; public: UILayer(); diff --git a/src/game/ui/components/UiRessourceWidget.cpp b/src/game/ui/components/UiRessourceWidget.cpp new file mode 100644 index 0000000..01f94e1 --- /dev/null +++ b/src/game/ui/components/UiRessourceWidget.cpp @@ -0,0 +1,21 @@ +// +// Created by sebastian on 12.02.26. +// + +#include "UiRessourceWidget.h" + +#include "../../../engine/core/gui/uiComponent/UiText.h" + +UiRessourceWidget::UiRessourceWidget(GLuint iconTextureID, int amount, Font &font, LayoutStyle &containerStyle, + LayoutStyle &iconStyle, LayoutStyle &textStyle) : UiComponent(containerStyle) { + + icon = std::make_unique(iconTextureID, iconStyle); + text = std::make_unique(font, std::to_string(amount), textStyle); + + addChild(std::move(icon)); + addChild(std::move(text)); +} + +void UiRessourceWidget::setAmount(int newAmount) { + text->setText(std::to_string(newAmount)); +} diff --git a/src/game/ui/components/UiRessourceWidget.h b/src/game/ui/components/UiRessourceWidget.h new file mode 100644 index 0000000..aa541ca --- /dev/null +++ b/src/game/ui/components/UiRessourceWidget.h @@ -0,0 +1,22 @@ +// +// Created by sebastian on 12.02.26. +// + +#ifndef DICEWARS_SIEDLER_UIRESSOURCEWIDGET_H +#define DICEWARS_SIEDLER_UIRESSOURCEWIDGET_H +#include "../../../engine/core/gui/uiComponent/UiComponent.h" +#include "../../../engine/core/gui/uiComponent/UiImage.h" +#include "../../../engine/core/gui/uiMain/UiContainer.h" + + +class UiRessourceWidget : public UiComponent { +public: + UiRessourceWidget(GLuint iconTextureID, int amount, Font& font, LayoutStyle& containerStyle, LayoutStyle& iconStyle, LayoutStyle& textStyle); + void setAmount(int newAmount); +private: + std::unique_ptr icon; + std::unique_ptr text; +}; + + +#endif //DICEWARS_SIEDLER_UIRESSOURCEWIDGET_H \ No newline at end of file