Dicewars-Siedler/src/game/UILayer.cpp
2026-02-11 22:36:03 +01:00

59 lines
1.4 KiB
C++

//
// Created by sebastian on 09.02.26.
//
#include "UILayer.h"
#include "../engine/core/gui/text/Font.h"
#include "../engine/core/gui/uiComponent/UiImage.h"
#include "../engine/core/gui/uiComponent/UiText.h"
#include "../engine/renderer/loader/Loader.h"
#include "../engine/renderer/model/GUITexture.h"
UILayer::UILayer() {
Loader& loader = Loader::instance();
guiRenderer = std::make_unique<GUIRenderer>(loader);
textRenderer = std::make_unique<TextRenderer>();
}
void UILayer::onAttach() {
Layer::onAttach();
rootContainer = std::make_unique<UiContainer>();
auto image = std::make_unique<UiImage>(
Loader::instance().loadTextureFromFile("assets/textures/texture.png").getTextureID(),
glm::vec2(0.5f, 0.5f), glm::vec2(0.5f)
);
rootContainer->addChild(std::move(image));
Font myFont("/usr/share/fonts/TTF/DejaVuSans.ttf", 48);
font = std::make_unique<Font>(myFont);
auto text = std::make_unique<UiText>(*font, "Hello World!", glm::vec2(0.5f, 0.5f), glm::vec2(0.3f, 0.1f));
rootContainer->addChild(std::move(text));
}
void UILayer::onUpdate() {
Layer::onUpdate();
UiRenderBundle renderBundle;
if (rootContainer) {
rootContainer->collectRenderData(renderBundle);
}
auto guis = renderBundle.getGUITextures();
guiRenderer->render(guis);
auto texts = renderBundle.getTexts();
textRenderer->renderTexts(texts);
}
void UILayer::onDetach() {
Layer::onDetach();
}