#pragma once #include "interfaces/command.hpp" #include "interfaces/cursor.hpp" #include "interfaces/engine.hpp" #include "interfaces/game.hpp" #include "interfaces/input.hpp" #include "interfaces/scene.hpp" #include "interfaces/window.hpp" #include #include #include class CLIGameEngine : public ICLIGameEngine, public yacppdic::AutoWirable< ICLIGameEngine, CLIGameEngine, IGameFactory, ISceneFactory, IInputHandler, ICursorController, IWindow> { 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 ) noexcept; };