#pragma once #include "engine/data/bounds.hpp" #include "engine/data/vector2.hpp" #include enum CursorEvent { POSITION_CHANGE }; // NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) class ICursorController { public: using Event = CursorEvent; using Context = Vector2; virtual ~ICursorController() noexcept = default; virtual void move(const Vector2 &direction, const uint32_t &amount) noexcept = 0; // NOLINTNEXTLINE(google-default-arguments) virtual void move_to(const Vector2 &position) noexcept = 0; [[nodiscard]] virtual auto where() const noexcept -> Vector2 = 0; virtual void ensure_position() noexcept = 0; virtual void hide() noexcept = 0; virtual void show() noexcept = 0; virtual void set_bounds(const Bounds &bounds) noexcept = 0; };