#pragma once #include "interfaces/cursor.hpp" #include "interfaces/game.hpp" #include "interfaces/generation_tracker.hpp" #include "interfaces/scene.hpp" #include "interfaces/status_updater.hpp" #include "interfaces/statusline.hpp" #include "interfaces/window.hpp" #include class Game : public IGame { public: Game(std::shared_ptr window, std::shared_ptr scene, std::shared_ptr cursor_controller, std::shared_ptr statusline, std::shared_ptr generation_tracker, std::shared_ptr status_updater) noexcept; void on_start() noexcept override; void on_update() noexcept override; void on_exit() const noexcept override; [[nodiscard]] std::unordered_map> get_input_config() const noexcept override; private: std::shared_ptr _window; std::shared_ptr _scene; std::shared_ptr _cursor_controller; std::shared_ptr _statusline; std::shared_ptr _generation_tracker; std::shared_ptr _status_updater; };