light/modules/surface/public/system.hpp
light7734 9badcddeae
Some checks failed
continuous-integration/drone/push Build is failing
refactor(surface): adjust to new ecs
2025-09-20 15:41:34 +03:30

65 lines
1.5 KiB
C++

#pragma once
#include <app/system.hpp>
#include <ecs/registry.hpp>
#include <math/vec2.hpp>
namespace lt::surface {
class System: public app::ISystem
{
public:
[[nodiscard]] System(Ref<ecs::Registry> registry);
~System() override;
System(System &&) = default;
System(const System &) = delete;
auto operator=(System &&) -> System & = default;
auto operator=(const System &) -> System & = delete;
void on_register() override;
void on_unregister() override;
auto tick() -> bool override;
private:
void on_surface_construct(ecs::Registry &registry, ecs::Entity entity);
void on_surface_destruct(ecs::Registry &registry, ecs::Entity entity);
void handle_requests(struct SurfaceComponent &surface);
void handle_events(struct SurfaceComponent &surface);
void modify_title(struct SurfaceComponent &surface, const struct ModifyTitleRequest &request);
void modify_resolution(
struct SurfaceComponent &surface,
const struct ModifyResolutionRequest &request
);
void modify_position(
struct SurfaceComponent &surface,
const struct ModifyPositionRequest &request
);
void modify_visiblity(
struct SurfaceComponent &surface,
const struct ModifyVisibilityRequest &request
);
void modify_position(ecs::Entity surface_entity, const math::ivec2 &new_size);
void modify_position(ecs::Entity surface_entity, const math::uvec2 &new_size);
void set_visibility(ecs::Entity surface_entity, bool visible);
Ref<ecs::Registry> m_registry;
};
} // namespace lt::surface