Files
BloomPatched/src/EventManager/EventManager.cpp

37 lines
1.3 KiB
C++
Raw Normal View History

2021-04-04 21:04:12 +01:00
#include "EventManager.hpp"
namespace Bloom
{
void EventManager::registerListener(std::shared_ptr<EventListener> listener) {
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
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-04-04 21:04:12 +01:00
void EventManager::triggerEvent(const std::shared_ptr<const Events::Event>& event) {
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
for (const auto&[listenerId, listener] : this->registeredListeners) {
if (listener->isEventTypeRegistered(event->getType())) {
listener->registerEvent(event);
}
2021-04-04 21:04:12 +01:00
}
}
2021-09-12 23:25:34 +01:00
bool EventManager::isEventTypeListenedFor(Events::EventType eventType) {
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
2021-09-12 23:25:34 +01:00
for (const auto&[listenerId, listener] : this->registeredListeners) {
if (listener->isEventTypeRegistered(eventType)) {
return true;
}
2021-09-12 23:25:34 +01:00
}
return false;
}
2021-09-12 23:25:34 +01:00
}