#pragma once #include "interfaces/command.hpp" #include "interfaces/cursor.hpp" #include "interfaces/scene.hpp" #include "interfaces/window.hpp" #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 std::unordered_map> get_input_config() const noexcept = 0; }; using IGameFactory = std::shared_ptr (*)( const std::shared_ptr &window, const std::shared_ptr &scene, const std::shared_ptr &cursor_controller);