aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api/EventManager.cpp
blob: 07ef1f79f3c9329645a65705655c24a4e4c1a933 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "EventManager.h"

void EventManager::unsubscribe(std::type_index eventType, const std::string & handlerName,
							   int eventId) {
	// if (eventId) {
	// 	std::unordered_map<
	// 		std::type_index, std::unordered_map<
	// 				 int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>::iterator subscriber_list = subscribers_by_event_id.find(eventType);
	// 	if (subscriber_list != subscribers_by_event_id.end()) {
	// 		std::unordered_map<
	// 			int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> &
	// 			handlers_map
	// 			= subscriber_list->second;
	// 		std::unordered_map<
	// 			int,
	// 			std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator
	// 			handlers
	// 			= handlers_map.find(eventId);
	// 		if (handlers != handlers_map.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<
	// 		std::type_index, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator
	// 		handlers_it
	// 		= subscribers.find(eventType);
	// 	if (handlers_it != subscribers.end()) {
	// 		std::vector<std::unique_ptr<IEventHandlerWrapper>> & handlers
	// 			= handlers_it->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::queue_event(std::unique_ptr<Event> && event_, int eventId) {
	events_queue.emplace_back(std::move(event_), eventId);
}

void EventManager::dispatch_events() {
	// for (std::vector<std::pair<std::unique_ptr<Event>, int>>::iterator eventIt
	// 	 = eventsQueue.begin();
	// 	 eventIt != eventsQueue.end();) {
	// 	bool handled = false;
	// 	if (!handled) {
	// 		triggerEvent(*eventIt->first.get(), eventIt->second);
	// 		eventIt = eventsQueue.erase(eventIt);
	// 	} else {
	// 		++eventIt;
	// 	}
	// }
}