#pragma once #include "interfaces/component.hpp" #include "interfaces/cursor.hpp" #include "interfaces/matrix.hpp" #include "engine/data/bounds.hpp" #include "engine/data/vector2.hpp" #include #include #include #include // NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) class IScene { public: virtual ~IScene() noexcept = default; using MatrixElement = char; virtual void enter() noexcept = 0; virtual void leave() noexcept = 0; [[nodiscard]] virtual auto size() const noexcept -> Bounds = 0; [[nodiscard]] virtual auto get_matrix() const noexcept -> const std::shared_ptr> & = 0; virtual void register_component( const std::shared_ptr &component, const Vector2 &position) noexcept = 0; [[nodiscard]] virtual auto get_components() const noexcept -> std::vector, Vector2>> = 0; };