aboutsummaryrefslogtreecommitdiff
path: root/src/engine/user/input.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/user/input.hpp')
-rw-r--r--src/engine/user/input.hpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/engine/user/input.hpp b/src/engine/user/input.hpp
index d2aa447..7a3c88e 100644
--- a/src/engine/user/input.hpp
+++ b/src/engine/user/input.hpp
@@ -1,9 +1,8 @@
#pragma once
#include "DI/auto_wirable.hpp"
-#include "interfaces/command.hpp"
#include "interfaces/input.hpp"
-#include "interfaces/observable.hpp"
+#include "interfaces/subscriber.hpp"
#include <limits>
#include <memory>
@@ -18,21 +17,23 @@ public:
void listen() const noexcept override;
- void attach(const char &key,
- const std::shared_ptr<ICommand> &command) noexcept override;
+ void
+ subscribe(const Event &event,
+ const std::shared_ptr<ISubscriber<Context>> &subscriber) noexcept override;
- void notify(const char &key) const noexcept override;
+ void notify_subscribers(const Event &event,
+ const Context &context) const noexcept override;
void enter_raw_mode() noexcept override;
void leave_raw_mode() noexcept override;
private:
- std::array<std::vector<std::shared_ptr<ICommand>>, CHAR_MAX> _key_commands;
+ std::array<std::vector<std::shared_ptr<ISubscriber<Context>>>, CHAR_MAX> _subscribers;
std::shared_ptr<termios> _original_termios = nullptr;
- using _KeyCommandsSizeType = decltype(_key_commands)::size_type;
+ using _SubscribersSizeType = decltype(_subscribers)::size_type;
- static _KeyCommandsSizeType _key_as_index(const char &key) noexcept;
+ static _SubscribersSizeType _event_as_index(const Event &event) noexcept;
};