From dcc6d3d5cafe47d53d1b321476bf73bb2d65ae9b Mon Sep 17 00:00:00 2001 From: HampusM Date: Wed, 8 Jun 2022 16:21:40 +0200 Subject: refactor: remove unused cursor controller dependency from scene --- src/bootstrap.cpp | 9 +-------- src/engine/engine.cpp | 22 ++++++++++------------ src/engine/engine.hpp | 10 +++++----- src/engine/graphics/scene.cpp | 8 ++------ src/engine/graphics/scene.hpp | 11 +++++------ src/interfaces/scene.hpp | 4 ---- 6 files changed, 23 insertions(+), 41 deletions(-) diff --git a/src/bootstrap.cpp b/src/bootstrap.cpp index e651512..1231937 100644 --- a/src/bootstrap.cpp +++ b/src/bootstrap.cpp @@ -39,6 +39,7 @@ auto bootstrap() noexcept -> yacppdic::Container container.bind().to(); container.bind().to(); container.bind().to(); + container.bind().to(); container.bind().to_factory( [&container]( @@ -72,14 +73,6 @@ auto bootstrap() noexcept -> yacppdic::Container return std::make_unique>(bounds); }); - container.bind().to_factory( - [&container](const std::shared_ptr &cursor_controller) - { - auto matrix_factory = container.get>(); - - return std::make_unique(matrix_factory, cursor_controller); - }); - container.bind().to_factory( [&container](const Bounds &size) { 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 user_input_observer, - std::shared_ptr cursor_controller) noexcept + std::shared_ptr cursor_controller, + std::shared_ptr 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 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 user_input_observer, - std::shared_ptr cursor_controller) noexcept; + std::shared_ptr cursor_controller, + std::shared_ptr scene) noexcept; void start() noexcept override; private: IGameFactory _game_factory; - ISceneFactory _scene_factory; IComponentRendererFactory _component_renderer_factory; std::shared_ptr _user_input_observer; std::shared_ptr _cursor_controller; + std::shared_ptr _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 #include -Scene::Scene( - IMatrixFactory matrix_factory, - std::shared_ptr cursor_controller) noexcept - : _matrix(matrix_factory(size())), - _cursor_controller(std::move(cursor_controller)), - _is_shown(false) +Scene::Scene(const IMatrixFactory &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 +#include #include #include @@ -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> { public: - explicit Scene( - IMatrixFactory matrix_factory, - std::shared_ptr cursor_controller) noexcept; + explicit Scene(const IMatrixFactory &matrix_factory) noexcept; void enter() noexcept override; @@ -43,7 +43,6 @@ public: private: std::shared_ptr> _matrix; - std::shared_ptr _cursor_controller; bool _is_shown; std::shared_ptr _original_termios = nullptr; diff --git a/src/interfaces/scene.hpp b/src/interfaces/scene.hpp index daabb10..b7bb97d 100644 --- a/src/interfaces/scene.hpp +++ b/src/interfaces/scene.hpp @@ -7,8 +7,6 @@ #include "engine/data/bounds.hpp" #include "engine/data/vector2.hpp" -#include - #include #include #include @@ -39,5 +37,3 @@ public: -> std::vector, Vector2>> = 0; }; -using ISceneFactory = yacppdic::Factory( - const std::shared_ptr &cursor_controller)>; -- cgit v1.2.3-18-g5258