#pragma once #include "interfaces/cursor.hpp" #include "interfaces/matrix.hpp" #include "interfaces/window.hpp" #include // NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) class IScene { public: virtual ~IScene() noexcept = default; virtual void enter() noexcept = 0; virtual void leave() noexcept = 0; [[nodiscard]] virtual const std::shared_ptr> & get_matrix() const noexcept = 0; }; using ISceneFactory = std::shared_ptr (*)( const std::shared_ptr &cursor_controller, const std::shared_ptr &window);