#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 = 40; class CLIGameEngine : public ICLIGameEngine, public yacppdic::AutoWirable< ICLIGameEngine, CLIGameEngine, IGameFactory, ISceneFactory, IUserInputObserver, ICursorController> { public: CLIGameEngine( IGameFactory game_factory, ISceneFactory scene_factory, std::shared_ptr user_input_observer, std::shared_ptr cursor_controller) noexcept; void start() noexcept override; private: IGameFactory _game_factory; ISceneFactory _scene_factory; std::shared_ptr _user_input_observer; std::shared_ptr _cursor_controller; };