From e0eaff89b5f3f289bf5d560ea64b969c90d32d18 Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 8 Mar 2022 17:00:18 +0100 Subject: refactor: add cursor controller interface --- src/bootstrap.cpp | 3 ++- src/engine/user/cursor.hpp | 10 ++++++---- src/game/input_configurator.cpp | 4 ++-- src/game/input_configurator.hpp | 10 +++++----- src/interfaces/cursor.hpp | 17 +++++++++++++++++ 5 files changed, 32 insertions(+), 12 deletions(-) create mode 100644 src/interfaces/cursor.hpp diff --git a/src/bootstrap.cpp b/src/bootstrap.cpp index 610945f..2e64986 100644 --- a/src/bootstrap.cpp +++ b/src/bootstrap.cpp @@ -2,6 +2,7 @@ // Interfaces #include "interfaces/argument_parser.hpp" +#include "interfaces/cursor.hpp" #include "interfaces/game.hpp" #include "interfaces/game_initializer.hpp" #include "interfaces/input.hpp" @@ -38,7 +39,7 @@ Container bootstrap() container.bind().to(); container.bind().to(); container.bind().to(); - container.bind().to(); + container.bind().to(); container.bind().to(); container.bind().to(); diff --git a/src/engine/user/cursor.hpp b/src/engine/user/cursor.hpp index 50dd028..977bfdf 100644 --- a/src/engine/user/cursor.hpp +++ b/src/engine/user/cursor.hpp @@ -1,6 +1,7 @@ #pragma once #include "DI/auto_wirable.hpp" +#include "interfaces/cursor.hpp" #include "engine/data/vector2.hpp" @@ -28,20 +29,21 @@ const std::unordered_map direction_for {Vector2::left(), MOVE_CURSOR_LEFT}, {Vector2::right(), MOVE_CURSOR_RIGHT}}; -class CursorController : public AutoWirable +class CursorController : public ICursorController, + public AutoWirable { public: CursorController(); - void move(const Vector2 &direction, const uint32_t &amount) noexcept; + void move(const Vector2 &direction, const uint32_t &amount) noexcept override; - void move_to(const Vector2 &position) noexcept; + void move_to(const Vector2 &position) noexcept override; static void hide(); static void show(); - [[nodiscard]] Vector2 where() const noexcept; + [[nodiscard]] Vector2 where() const noexcept override; private: Vector2 _position; diff --git a/src/game/input_configurator.cpp b/src/game/input_configurator.cpp index ea1ee75..76e5b66 100644 --- a/src/game/input_configurator.cpp +++ b/src/game/input_configurator.cpp @@ -8,7 +8,7 @@ void exit_success() exit(EXIT_SUCCESS); } -auto move_cursor(const Vector2 &direction, CursorController &cursor_controller) +auto move_cursor(const Vector2 &direction, ICursorController &cursor_controller) { return [direction, &cursor_controller]() { @@ -18,7 +18,7 @@ auto move_cursor(const Vector2 &direction, CursorController &cursor_controller) } // namespace InputActions -InputConfigurator::InputConfigurator(std::shared_ptr cursor_controller) +InputConfigurator::InputConfigurator(std::shared_ptr cursor_controller) : _cursor_controller(std::move(cursor_controller)) { } diff --git a/src/game/input_configurator.hpp b/src/game/input_configurator.hpp index 8e5b9bf..fa501c7 100644 --- a/src/game/input_configurator.hpp +++ b/src/game/input_configurator.hpp @@ -1,11 +1,11 @@ #pragma once #include "DI/auto_wirable.hpp" +#include "interfaces/cursor.hpp" #include "interfaces/input.hpp" #include "interfaces/input_configurator.hpp" #include "engine/data/vector2.hpp" -#include "engine/user/cursor.hpp" #include #include @@ -13,7 +13,7 @@ namespace InputActions { -auto move_cursor(const Vector2 &direction, CursorController &cursor_controller); +auto move_cursor(const Vector2 &direction, ICursorController &cursor_controller); void exit_success(); @@ -21,13 +21,13 @@ void exit_success(); class InputConfigurator : public IInputConfigurator, - public AutoWirable + public AutoWirable { public: - explicit InputConfigurator(std::shared_ptr cursor_controller); + explicit InputConfigurator(std::shared_ptr cursor_controller); void configure(IInputHandler &input_handler) override; private: - std::shared_ptr _cursor_controller; + std::shared_ptr _cursor_controller; }; diff --git a/src/interfaces/cursor.hpp b/src/interfaces/cursor.hpp new file mode 100644 index 0000000..adab524 --- /dev/null +++ b/src/interfaces/cursor.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "engine/data/vector2.hpp" + +class ICursorController +{ +public: + virtual void move(const Vector2 &direction, const uint32_t &amount) noexcept = 0; + + virtual void move_to(const Vector2 &position) noexcept = 0; + + [[nodiscard]] virtual Vector2 where() const noexcept = 0; + + static void hide(); + + static void show(); +}; -- cgit v1.2.3-18-g5258