2021-04-04 21:04:12 +01:00
|
|
|
#include "EventManager.hpp"
|
|
|
|
|
|
|
|
|
|
using namespace Bloom;
|
|
|
|
|
|
|
|
|
|
void EventManager::registerListener(std::shared_ptr<EventListener> listener) {
|
|
|
|
|
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
|
2021-06-22 23:52:31 +01:00
|
|
|
this->registeredListeners.insert(std::pair(listener->getId(), std::move(listener)));
|
2021-04-04 21:04:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EventManager::deregisterListener(size_t listenerId) {
|
|
|
|
|
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
|
|
|
|
|
this->registeredListeners.erase(listenerId);
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-22 23:52:31 +01:00
|
|
|
void EventManager::triggerEvent(const std::shared_ptr<const Events::Event>& event) {
|
2021-04-04 21:04:12 +01:00
|
|
|
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
|
2021-06-22 23:52:31 +01:00
|
|
|
|
2021-08-19 22:06:59 +01:00
|
|
|
for(auto const& [listenerId, listener] : this->registeredListeners) {
|
|
|
|
|
if (listener->isEventTypeRegistered(event->getType())) {
|
2021-04-04 21:04:12 +01:00
|
|
|
listener->registerEvent(event);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-09-12 23:25:34 +01:00
|
|
|
|
|
|
|
|
bool EventManager::isEventTypeListenedFor(Events::EventType eventType) {
|
|
|
|
|
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
|
|
|
|
|
|
|
|
|
|
for(auto const& [listenerId, listener] : this->registeredListeners) {
|
|
|
|
|
if (listener->isEventTypeRegistered(eventType)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|