Dicewars-Siedler/src/engine/core/gui/uiComponent/UiComponent.h
2026-02-11 22:36:03 +01:00

39 lines
977 B
C++

//
// Created by sebastian on 10.02.26.
//
#ifndef DICEWARS_SIEDLER_UICOMPONENT_H
#define DICEWARS_SIEDLER_UICOMPONENT_H
#include <memory>
#include <vector>
#include "UiPositioner.h"
#include "UiRenderBundle.h"
#include "../../../renderer/model/GUITexture.h"
class UiComponent {
public:
UiComponent() : uiPositioner(*this) {};
virtual ~UiComponent() = default;
void addChild(std::unique_ptr<UiComponent> child);
void setVisible(bool visible);
[[nodiscard]] bool isVisible() const;
void update(float delta);
void collectRenderData(UiRenderBundle& uiRenderBundle);
virtual bool isMouseOver(float mouseX, float mouseY);
UiComponent* parent = nullptr;
UiPositioner uiPositioner;
protected:
std::vector<std::unique_ptr<UiComponent>> children;
bool visible = true;
virtual void onUpdate(float /*delta*/) {}
virtual void onCollectRenderData(UiRenderBundle& uiRenderBundle) {}
};
#endif //DICEWARS_SIEDLER_UICOMPONENT_H