// // Created by sebastian on 10.02.26. // #ifndef DICEWARS_SIEDLER_UICOMPONENT_H #define DICEWARS_SIEDLER_UICOMPONENT_H #include #include #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 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> children; bool visible = true; virtual void onUpdate(float /*delta*/) {} virtual void onCollectRenderData(UiRenderBundle& uiRenderBundle) {} }; #endif //DICEWARS_SIEDLER_UICOMPONENT_H