#pragma once #include #include #include #include "interfaces/component_renderer.hpp" #include "interfaces/cursor.hpp" #include "interfaces/engine.hpp" #include "interfaces/game.hpp" #include "interfaces/input.hpp" #include "interfaces/scene.hpp" class ICursorController; class IScene; class IUserInputObserver; constexpr auto MIN_TIME_SINCE_LAST_UPDATE_MILLIS = 15; class CLIGameEngine : public ICLIGameEngine, public yacppdic::AutoWirable< ICLIGameEngine, CLIGameEngine, IGameFactory, IComponentRendererFactory, IUserInputObserver, ICursorController, IScene> { public: CLIGameEngine( IGameFactory game_factory, IComponentRendererFactory component_renderer_factory, std::shared_ptr user_input_observer, std::shared_ptr cursor_controller, std::shared_ptr scene) noexcept; void start() noexcept override; private: IGameFactory _game_factory; IComponentRendererFactory _component_renderer_factory; std::shared_ptr _user_input_observer; std::shared_ptr _cursor_controller; std::shared_ptr _scene; };