diff options
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/engine.cpp | 22 | ||||
-rw-r--r-- | src/engine/engine.hpp | 10 | ||||
-rw-r--r-- | src/engine/graphics/scene.cpp | 8 | ||||
-rw-r--r-- | src/engine/graphics/scene.hpp | 11 |
4 files changed, 22 insertions, 29 deletions
diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index f947a45..c569c69 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -8,36 +8,34 @@ CLIGameEngine::CLIGameEngine( IGameFactory game_factory, - ISceneFactory scene_factory, IComponentRendererFactory component_renderer_factory, std::shared_ptr<IUserInputObserver> user_input_observer, - std::shared_ptr<ICursorController> cursor_controller) noexcept + std::shared_ptr<ICursorController> cursor_controller, + std::shared_ptr<IScene> scene) noexcept : _game_factory(std::move(game_factory)), - _scene_factory(std::move(scene_factory)), _component_renderer_factory(std::move(component_renderer_factory)), _user_input_observer(std::move(user_input_observer)), - _cursor_controller(std::move(cursor_controller)) + _cursor_controller(std::move(cursor_controller)), + _scene(std::move(scene)) { } void CLIGameEngine::start() noexcept { - std::shared_ptr<IScene> scene = _scene_factory(_cursor_controller); - auto component_renderer = _component_renderer_factory(_cursor_controller); - scene->enter(); + _scene->enter(); - _cursor_controller->set_bounds(scene->size()); + _cursor_controller->set_bounds(_scene->size()); - auto game = _game_factory(scene, _cursor_controller, _user_input_observer); + auto game = _game_factory(_scene, _cursor_controller, _user_input_observer); game->on_start(); std::atexit(normalize_lambda( - [this, scene, &game]() + [this, &game]() { - scene->leave(); + _scene->leave(); game->on_exit(); })); @@ -69,7 +67,7 @@ void CLIGameEngine::start() noexcept game->on_update(); - for (auto [component, position] : scene->get_components()) + for (auto [component, position] : _scene->get_components()) { if (component->get_need_render()) { diff --git a/src/engine/engine.hpp b/src/engine/engine.hpp index a274ed4..28eb8fc 100644 --- a/src/engine/engine.hpp +++ b/src/engine/engine.hpp @@ -19,26 +19,26 @@ class CLIGameEngine : public ICLIGameEngine, ICLIGameEngine, CLIGameEngine, IGameFactory, - ISceneFactory, IComponentRendererFactory, IUserInputObserver, - ICursorController> + ICursorController, + IScene> { public: CLIGameEngine( IGameFactory game_factory, - ISceneFactory scene_factory, IComponentRendererFactory component_renderer_factory, std::shared_ptr<IUserInputObserver> user_input_observer, - std::shared_ptr<ICursorController> cursor_controller) noexcept; + std::shared_ptr<ICursorController> cursor_controller, + std::shared_ptr<IScene> scene) noexcept; void start() noexcept override; private: IGameFactory _game_factory; - ISceneFactory _scene_factory; IComponentRendererFactory _component_renderer_factory; std::shared_ptr<IUserInputObserver> _user_input_observer; std::shared_ptr<ICursorController> _cursor_controller; + std::shared_ptr<IScene> _scene; }; diff --git a/src/engine/graphics/scene.cpp b/src/engine/graphics/scene.cpp index e0f4da6..e4bdb6e 100644 --- a/src/engine/graphics/scene.cpp +++ b/src/engine/graphics/scene.cpp @@ -9,12 +9,8 @@ #include <iostream> #include <sys/ioctl.h> -Scene::Scene( - IMatrixFactory<MatrixElement> matrix_factory, - std::shared_ptr<ICursorController> cursor_controller) noexcept - : _matrix(matrix_factory(size())), - _cursor_controller(std::move(cursor_controller)), - _is_shown(false) +Scene::Scene(const IMatrixFactory<MatrixElement> &matrix_factory) noexcept + : _matrix(matrix_factory(size())), _is_shown(false) { _matrix->fill(' '); } diff --git a/src/engine/graphics/scene.hpp b/src/engine/graphics/scene.hpp index c2b11e8..4df5f56 100644 --- a/src/engine/graphics/scene.hpp +++ b/src/engine/graphics/scene.hpp @@ -1,13 +1,13 @@ #pragma once #include "interfaces/component.hpp" -#include "interfaces/cursor.hpp" #include "interfaces/matrix.hpp" #include "interfaces/scene.hpp" #include "engine/data/vector2.hpp" #include <fmt/core.h> +#include <yacppdic/auto_wirable.hpp> #include <memory> #include <string_view> @@ -18,12 +18,12 @@ constexpr fmt::string_view ENABLE_ALT_BUFFER = "{esc}[?1049h"; constexpr fmt::string_view DISABLE_ALT_BUFFER = "{esc}[?1049l"; -class Scene : public IScene +class Scene + : public IScene, + public yacppdic::AutoWirable<IScene, Scene, IMatrixFactory<IScene::MatrixElement>> { public: - explicit Scene( - IMatrixFactory<MatrixElement> matrix_factory, - std::shared_ptr<ICursorController> cursor_controller) noexcept; + explicit Scene(const IMatrixFactory<MatrixElement> &matrix_factory) noexcept; void enter() noexcept override; @@ -43,7 +43,6 @@ public: private: std::shared_ptr<IMatrix<MatrixElement>> _matrix; - std::shared_ptr<ICursorController> _cursor_controller; bool _is_shown; std::shared_ptr<termios> _original_termios = nullptr; |