Initial commit
This commit is contained in:
26
src/EventManager/EventManager.cpp
Normal file
26
src/EventManager/EventManager.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#include "EventManager.hpp"
|
||||
|
||||
using namespace Bloom;
|
||||
|
||||
void EventManager::registerListener(std::shared_ptr<EventListener> listener) {
|
||||
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
|
||||
size_t newId = this->registeredListeners.size() + 1;
|
||||
|
||||
this->registeredListeners.insert(std::pair<size_t, std::shared_ptr<EventListener>>(newId, listener));
|
||||
listener->setId(newId);
|
||||
}
|
||||
|
||||
void EventManager::deregisterListener(size_t listenerId) {
|
||||
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
|
||||
this->registeredListeners.erase(listenerId);
|
||||
}
|
||||
|
||||
void EventManager::triggerEvent(std::shared_ptr<const Events::Event> event) {
|
||||
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
|
||||
for(auto const& [listenerId, listener] : this->registeredListeners) {
|
||||
auto registeredEventTypes = listener->getRegisteredEventTypeNames();
|
||||
if (registeredEventTypes.find(event->getName()) != registeredEventTypes.end()) {
|
||||
listener->registerEvent(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user