#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 #include #include constexpr auto MIN_TIME_SINCE_LAST_UPDATE_MILLIS = 100; class CLIGameEngine : public ICLIGameEngine, public yacppdic::AutoWirable< ICLIGameEngine, CLIGameEngine, IGameFactory, ISceneFactory, IInputHandler, ICursorController> { public: CLIGameEngine( IGameFactory game_factory, ISceneFactory scene_factory, std::shared_ptr input_handler, std::shared_ptr cursor_controller) noexcept; void start() noexcept override; private: IGameFactory _game_factory; ISceneFactory _scene_factory; std::shared_ptr _input_handler; std::shared_ptr _cursor_controller; void _configure_input( const std::unordered_map> &input_config) noexcept; };