#pragma once #include "interfaces/command.hpp" #include "interfaces/cursor.hpp" #include "interfaces/scene.hpp" #include "interfaces/window.hpp" #include #include #include // NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) class IGame { public: virtual ~IGame() noexcept = default; virtual void on_start() noexcept = 0; virtual void on_update() noexcept = 0; virtual void on_exit() const noexcept = 0; [[nodiscard]] virtual auto get_input_config() const noexcept -> std::unordered_map> = 0; }; /* using IGameFactory = std::unique_ptr (*)( const std::shared_ptr &window, const std::shared_ptr &scene, const std::shared_ptr &cursor_controller); */ using IGameFactory = yacppdic::Factory( const std::shared_ptr &window, const std::shared_ptr &scene, const std::shared_ptr &cursor_controller)>;