aboutsummaryrefslogtreecommitdiff
path: root/mwe/events/src
diff options
context:
space:
mode:
Diffstat (limited to 'mwe/events/src')
-rw-r--r--mwe/events/src/eventManager.cpp152
-rw-r--r--mwe/events/src/main.cpp25
2 files changed, 0 insertions, 177 deletions
diff --git a/mwe/events/src/eventManager.cpp b/mwe/events/src/eventManager.cpp
index e022849..c37dcb0 100644
--- a/mwe/events/src/eventManager.cpp
+++ b/mwe/events/src/eventManager.cpp
@@ -1,6 +1,5 @@
#include "eventManager.h"
-<<<<<<< HEAD
void EventManager::shutdown()
{
subscribers.clear();
@@ -96,155 +95,4 @@ void EventManager::dispatchEvents()
++eventIt;
}
}
-=======
-void EventManager::shutdown() { m_subscribers.clear(); }
-
-void EventManager::subscribe(int eventType,
- std::unique_ptr<IEventHandlerWrapper> && handler,
- int eventId) {
- if (eventId) {
- std::unordered_map<
- int, std::unordered_map<
- int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>::
- iterator subscribers
- = m_subscribersByEventId.find(eventType);
-
- if (subscribers != m_subscribersByEventId.end()) {
- std::unordered_map<
- int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> &
- handlersMap
- = subscribers->second;
- std::unordered_map<
- int,
- std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator
- handlers
- = handlersMap.find(eventId);
- if (handlers != handlersMap.end()) {
- handlers->second.emplace_back(std::move(handler));
- return;
- }
- }
- m_subscribersByEventId[eventType][eventId].emplace_back(
- std::move(handler));
-
- } else {
- std::unordered_map<
- int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator
- subscribers
- = m_subscribers.find(eventType);
- if (subscribers != m_subscribers.end()) {
- std::vector<std::unique_ptr<IEventHandlerWrapper>> & handlers
- = subscribers->second;
- for (std::unique_ptr<IEventHandlerWrapper> & it : handlers) {
- if (it->getType() == handler->getType()) {
- // log for double register
- return;
- }
- }
- handlers.emplace_back(std::move(handler));
- } else {
- m_subscribers[eventType].emplace_back(std::move(handler));
- }
- }
-}
-
-void EventManager::unsubscribe(int eventType, const std::string & handlerName,
- int eventId) {
- if (eventId) {
- std::unordered_map<
- int, std::unordered_map<
- int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>::
- iterator subscribers
- = m_subscribersByEventId.find(eventType);
- if (subscribers != m_subscribersByEventId.end()) {
- std::unordered_map<
- int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> &
- handlersMap
- = subscribers->second;
- std::unordered_map<
- int,
- std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator
- handlers
- = handlersMap.find(eventId);
- if (handlers != handlersMap.end()) {
- std::vector<std::unique_ptr<IEventHandlerWrapper>> & callbacks
- = handlers->second;
- for (std::vector<
- std::unique_ptr<IEventHandlerWrapper>>::iterator it
- = callbacks.begin();
- it != callbacks.end(); ++it) {
- if (it->get()->getType() == handlerName) {
- it = callbacks.erase(it);
- return;
- }
- }
- }
- }
- } else {
- std::unordered_map<
- int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator
- handlersIt
- = m_subscribers.find(eventType);
- if (handlersIt != m_subscribers.end()) {
- std::vector<std::unique_ptr<IEventHandlerWrapper>> & handlers
- = handlersIt->second;
- for (std::vector<std::unique_ptr<IEventHandlerWrapper>>::iterator it
- = handlers.begin();
- it != handlers.end(); ++it) {
- if (it->get()->getType() == handlerName) {
- it = handlers.erase(it);
- return;
- }
- }
- }
- }
-}
-
-void EventManager::triggerEvent(const Event & event_, int eventId) {
- std::vector<std::unique_ptr<IEventHandlerWrapper>> & handlers
- = m_subscribers[event_.getEventType()];
- for (std::unique_ptr<IEventHandlerWrapper> & handler : handlers) {
- handler->exec(event_);
- }
-
- std::unordered_map<
- int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> & handlersMap
- = m_subscribersByEventId[event_.getEventType()];
- std::unordered_map<
- int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator
- handlersIt
- = handlersMap.find(eventId);
- if (handlersIt != handlersMap.end()) {
- std::vector<std::unique_ptr<IEventHandlerWrapper>> & callbacks
- = handlersIt->second;
- for (std::vector<std::unique_ptr<IEventHandlerWrapper>>::iterator it
- = callbacks.begin();
- it != callbacks.end();) {
- std::unique_ptr<IEventHandlerWrapper> & handler = *it;
- handler->exec(event_);
- if (handler->isDestroyOnSuccess()) {
- it = callbacks.erase(it);
- } else {
- ++it;
- }
- }
- }
-}
-
-void EventManager::queueEvent(std::unique_ptr<Event> && event_, int eventId) {
- m_eventsQueue.emplace_back(std::move(event_), eventId);
-}
-
-void EventManager::dispatchEvents() {
- for (std::vector<std::pair<std::unique_ptr<Event>, int>>::iterator eventIt
- = m_eventsQueue.begin();
- eventIt != m_eventsQueue.end();) {
- if (!eventIt->first.get()->getHandled()) {
- triggerEvent(*eventIt->first.get(), eventIt->second);
- eventIt = m_eventsQueue.erase(eventIt);
- } else {
- ++eventIt;
- }
- }
->>>>>>> b3b762a34e7ccb4a0dcd041a693ac7180af16002
}
diff --git a/mwe/events/src/main.cpp b/mwe/events/src/main.cpp
index 971ca35..d056f85 100644
--- a/mwe/events/src/main.cpp
+++ b/mwe/events/src/main.cpp
@@ -3,13 +3,9 @@
#include <SDL2/SDL.h>
#include <iostream>
#include <memory>
-<<<<<<< HEAD
#include "loopManager.h"
#include "event.h"
#include "customTypes.h"
-=======
-
->>>>>>> b3b762a34e7ccb4a0dcd041a693ac7180af16002
class PlayerDamagedEvent : public Event {
public:
PlayerDamagedEvent(int damage, int playerID)
@@ -17,15 +13,9 @@ public:
REGISTER_EVENT_TYPE(PlayerDamagedEvent);
-<<<<<<< HEAD
int getDamage() const { return damage; }
int getPlayerID() const { return playerID; }
-=======
- int getDamage() const { return damage; }
- int getPlayerID() const { return playerID; }
-
->>>>>>> b3b762a34e7ccb4a0dcd041a693ac7180af16002
private:
int damage;
int playerID;
@@ -35,7 +25,6 @@ void onPlayerDamaged(const PlayerDamagedEvent & e) {
<< " damage." << std::endl;
}
-<<<<<<< HEAD
void onKeyPressed1(const KeyPressedEvent& e)
{
int keyCode = e.getKeyCode();
@@ -54,11 +43,6 @@ void testCollisionEvent() {
subscribe<CollisionEvent>(CollisionHandler,1);
// EventHandler<PlayerDamagedEvent>
triggerEvent(CollisionEvent(testCollision), 1);
-=======
-void onKeyPressed(const KeyPressedEvent & e) {
- const int keyCode = e.getKeyCode();
- fprintf(stderr, "KeyCode %d\n", keyCode);
->>>>>>> b3b762a34e7ccb4a0dcd041a693ac7180af16002
}
int main(int argc, char * args[]) {
LoopManager gameLoop;
@@ -69,20 +53,11 @@ int main(int argc, char * args[]) {
// custom event class poc
subscribe<PlayerDamagedEvent>(onPlayerDamaged);
triggerEvent(PlayerDamagedEvent(50, 1));
-<<<<<<< HEAD
subscribe<KeyPressedEvent>(onKeyPressed,1,false);
subscribe<KeyPressedEvent>(onKeyPressed1,false);
// queueEvent(std::move(anotherKeyPressEvent));
triggerEvent(KeyPressedEvent(42), 1);
-=======
- //EventHandler<KeyPressedEvent> callback = onKeyPressed;
- //subscribe<KeyPressedEvent>(callback,false);
- std::unique_ptr<Event> anotherKeyPressEvent
- = std::make_unique<KeyPressedEvent>(65);
- queueEvent(std::move(anotherKeyPressEvent));
- triggerEvent(KeyPressedEvent(42));
->>>>>>> b3b762a34e7ccb4a0dcd041a693ac7180af16002
EventManager::getInstance().dispatchEvents();
//collision event call
testCollisionEvent();