#pragma once #include "DI/auto_wirable.hpp" #include "interfaces/cursor.hpp" #include "interfaces/engine.hpp" #include "interfaces/game.hpp" #include "interfaces/input.hpp" #include "interfaces/observable.hpp" #include "interfaces/scene.hpp" #include "interfaces/window.hpp" #include #include class CLIGameEngine : public ICLIGameEngine, public AutoWirable { public: CLIGameEngine(IGameFactory game_factory, ISceneFactory scene_factory, std::shared_ptr input_handler, std::shared_ptr cursor_controller, std::shared_ptr window) noexcept; void start() noexcept override; private: IGameFactory _game_factory; ISceneFactory _scene_factory; std::shared_ptr _input_handler; std::shared_ptr _cursor_controller; std::shared_ptr _window; void _configure_input(const std::unordered_map &input_config); };