#pragma once #include "interfaces/command.hpp" #include "interfaces/cursor.hpp" #include "interfaces/scene.hpp" #include "interfaces/window.hpp" #include #include class IGame { public: virtual ~IGame() = default; virtual void run() = 0; [[nodiscard]] virtual std::unordered_map> get_input_config( const std::shared_ptr &window, const std::shared_ptr &scene, const std::shared_ptr &cursor_controller) const noexcept = 0; }; using IGameFactory = std::shared_ptr (*)();