aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/api')
-rw-r--r--src/crepe/api/EventHandler.hpp3
-rw-r--r--src/crepe/api/EventManager.cpp24
-rw-r--r--src/crepe/api/EventManager.h11
-rw-r--r--src/crepe/api/EventManager.hpp11
-rw-r--r--src/crepe/api/IKeyListener.cpp17
-rw-r--r--src/crepe/api/IKeyListener.h6
-rw-r--r--src/crepe/api/IMouseListener.cpp26
7 files changed, 46 insertions, 52 deletions
diff --git a/src/crepe/api/EventHandler.hpp b/src/crepe/api/EventHandler.hpp
index 8d8136b..391dcca 100644
--- a/src/crepe/api/EventHandler.hpp
+++ b/src/crepe/api/EventHandler.hpp
@@ -7,7 +7,7 @@ namespace crepe {
// Implementation of EventHandlerWrapper constructor
template <typename EventType>
EventHandlerWrapper<EventType>::EventHandlerWrapper(const EventHandler<EventType> & handler)
- : handler(handler){}
+ : handler(handler) {}
// Implementation of EventHandlerWrapper::call
template <typename EventType>
@@ -15,5 +15,4 @@ bool EventHandlerWrapper<EventType>::call(const Event & e) {
return this->handler(static_cast<const EventType &>(e));
}
-
} //namespace crepe
diff --git a/src/crepe/api/EventManager.cpp b/src/crepe/api/EventManager.cpp
index 64d7c26..993db86 100644
--- a/src/crepe/api/EventManager.cpp
+++ b/src/crepe/api/EventManager.cpp
@@ -20,8 +20,7 @@ void EventManager::dispatch_events() {
}
std::vector<CallbackEntry> & handlers = handlers_it->second;
- for (auto handler_it = handlers.begin(); handler_it != handlers.end();
- ++handler_it) {
+ for (auto handler_it = handlers.begin(); handler_it != handlers.end(); ++handler_it) {
// If callback is executed and returns true, remove the event from the queue
if ((*handler_it).callback->exec(*event)) {
event_it = this->events_queue.erase(event_it);
@@ -42,15 +41,14 @@ void EventManager::clear() {
}
void EventManager::unsubscribe(subscription_t event_id) {
- for (auto& [event_type, handlers] : this->subscribers) {
- for (auto it = handlers.begin(); it != handlers.end();) {
- if (it->id == event_id) {
- it = handlers.erase(it);
- return;
- } else {
- ++it;
- }
- }
- }
+ for (auto & [event_type, handlers] : this->subscribers) {
+ for (auto it = handlers.begin(); it != handlers.end();) {
+ if (it->id == event_id) {
+ it = handlers.erase(it);
+ return;
+ } else {
+ ++it;
+ }
+ }
+ }
}
-
diff --git a/src/crepe/api/EventManager.h b/src/crepe/api/EventManager.h
index 93e9ca2..bd9772a 100644
--- a/src/crepe/api/EventManager.h
+++ b/src/crepe/api/EventManager.h
@@ -48,7 +48,8 @@ public:
* \return A unique subscription ID associated with the registered callback.
*/
template <typename EventType>
- subscription_t subscribe(const EventHandler<EventType> & callback, int channel = CHANNEL_ALL);
+ subscription_t subscribe(const EventHandler<EventType> & callback,
+ int channel = CHANNEL_ALL);
/**
* \brief Unsubscribe a previously registered callback.
@@ -112,8 +113,8 @@ private:
*/
struct QueueEntry {
std::unique_ptr<Event> event; ///< The event instance.
- int channel = CHANNEL_ALL; ///< The channel associated with the event.
- std::type_index type; ///< The type of the event.
+ int channel = CHANNEL_ALL; ///< The channel associated with the event.
+ std::type_index type; ///< The type of the event.
};
/**
@@ -122,8 +123,8 @@ private:
*/
struct CallbackEntry {
std::unique_ptr<IEventHandlerWrapper> callback; ///< The callback function wrapper.
- int channel = CHANNEL_ALL; ///< The channel this callback listens to.
- subscription_t id = -1; ///< Unique subscription ID.
+ int channel = CHANNEL_ALL; ///< The channel this callback listens to.
+ subscription_t id = -1; ///< Unique subscription ID.
};
//! The queue of events to be processed during dispatch.
diff --git a/src/crepe/api/EventManager.hpp b/src/crepe/api/EventManager.hpp
index d7afa9f..b2a94bd 100644
--- a/src/crepe/api/EventManager.hpp
+++ b/src/crepe/api/EventManager.hpp
@@ -10,10 +10,7 @@ subscription_t EventManager::subscribe(const EventHandler<EventType> & callback,
= std::make_unique<EventHandlerWrapper<EventType>>(callback);
std::vector<CallbackEntry> & handlers = this->subscribers[event_type];
handlers.emplace_back(CallbackEntry{
- .callback = std::move(handler),
- .channel = channel,
- .id = subscription_counter
- });
+ .callback = std::move(handler), .channel = channel, .id = subscription_counter});
return subscription_counter;
}
@@ -25,9 +22,8 @@ void EventManager::queue_event(const EventType & event, int channel) {
auto event_ptr = std::make_unique<EventType>(event);
- this->events_queue.push_back(QueueEntry{.event = std::move(event_ptr),
- .channel = channel,
- .type = event_type});
+ this->events_queue.push_back(
+ QueueEntry{.event = std::move(event_ptr), .channel = channel, .type = event_type});
}
template <typename EventType>
@@ -49,5 +45,4 @@ void EventManager::trigger_event(const EventType & event, int channel) {
}
}
-
} // namespace crepe
diff --git a/src/crepe/api/IKeyListener.cpp b/src/crepe/api/IKeyListener.cpp
index ebbf486..7aefaf7 100644
--- a/src/crepe/api/IKeyListener.cpp
+++ b/src/crepe/api/IKeyListener.cpp
@@ -3,15 +3,16 @@
using namespace crepe;
// Constructor with specified channel
-IKeyListener::IKeyListener(int channel) :
- event_manager(EventManager::get_instance()) {
- press_id = event_manager.subscribe<KeyPressEvent>([this](const KeyPressEvent & event) { return this->on_key_pressed(event); }, channel);
- release_id = event_manager.subscribe<KeyReleaseEvent>([this](const KeyReleaseEvent & event) { return this->on_key_released(event); }, channel);
+IKeyListener::IKeyListener(int channel) : event_manager(EventManager::get_instance()) {
+ this->press_id = event_manager.subscribe<KeyPressEvent>(
+ [this](const KeyPressEvent & event) { return this->on_key_pressed(event); }, channel);
+ this->release_id = event_manager.subscribe<KeyReleaseEvent>(
+ [this](const KeyReleaseEvent & event) { return this->on_key_released(event); },
+ channel);
}
// Destructor, unsubscribe events
-IKeyListener::~IKeyListener() {
- event_manager.unsubscribe(press_id);
- event_manager.unsubscribe(release_id);
+IKeyListener::~IKeyListener() {
+ event_manager.unsubscribe(this->press_id);
+ event_manager.unsubscribe(this->release_id);
}
-
diff --git a/src/crepe/api/IKeyListener.h b/src/crepe/api/IKeyListener.h
index 4726aa7..2a89cbc 100644
--- a/src/crepe/api/IKeyListener.h
+++ b/src/crepe/api/IKeyListener.h
@@ -36,12 +36,14 @@ public:
* \return True if the event was handled, false otherwise.
*/
virtual bool on_key_released(const KeyReleaseEvent & event) = 0;
+
private:
//! Key press event id
subscription_t press_id = -1;
- //!< Key release event id
+ //! Key release event id
subscription_t release_id = -1;
- EventManager & event_manager;
+ //! EventManager reference
+ EventManager & event_manager;;
};
} // namespace crepe
diff --git a/src/crepe/api/IMouseListener.cpp b/src/crepe/api/IMouseListener.cpp
index a6cb163..7d38280 100644
--- a/src/crepe/api/IMouseListener.cpp
+++ b/src/crepe/api/IMouseListener.cpp
@@ -2,29 +2,27 @@
using namespace crepe;
-IMouseListener::IMouseListener(int channel)
- : event_manager(EventManager::get_instance()) {
- click_id = event_manager.subscribe<MouseClickEvent>(
+IMouseListener::IMouseListener(int channel) : event_manager(EventManager::get_instance()) {
+ this->click_id = event_manager.subscribe<MouseClickEvent>(
[this](const MouseClickEvent & event) { return this->on_mouse_clicked(event); },
channel);
- press_id = event_manager.subscribe<MousePressEvent>(
+ this->press_id = event_manager.subscribe<MousePressEvent>(
[this](const MousePressEvent & event) { return this->on_mouse_pressed(event); },
channel);
- release_id = event_manager.subscribe<MouseReleaseEvent>(
+ this->release_id = event_manager.subscribe<MouseReleaseEvent>(
[this](const MouseReleaseEvent & event) { return this->on_mouse_released(event); },
channel);
- move_id = event_manager.subscribe<MouseMoveEvent>(
- [this](const MouseMoveEvent & event) { return this->on_mouse_moved(event); },
- channel);
+ this->move_id = event_manager.subscribe<MouseMoveEvent>(
+ [this](const MouseMoveEvent & event) { return this->on_mouse_moved(event); }, channel);
}
IMouseListener::~IMouseListener() {
- // Unsubscribe event handlers
- event_manager.unsubscribe(click_id);
- event_manager.unsubscribe(press_id);
- event_manager.unsubscribe(release_id);
- event_manager.unsubscribe(move_id);
- }
+ // Unsubscribe event handlers
+ event_manager.unsubscribe(this->click_id);
+ event_manager.unsubscribe(this->press_id);
+ event_manager.unsubscribe(this->release_id);
+ event_manager.unsubscribe(this->move_id);
+}