View difference between Paste ID: VxB6Yysk and CBpmeh0B
SHOW: | | - or go back to the newest paste.
1
//! Controls the event processors, effectively a singleton
2
class EventController{
3
protected:
4
	std::map<SDL_EventType, std::vector<EventProcessor*> > myEvents;
5
//	std::unique_lock<std::mutex> eLock;
6
7
public:
8
	//! passes the event on to the processors registered for it.
9
	bool process(SDL_Event event);
10
	//! Registers a new processor
11
	bool registerEvent(EventProcessor* processor, SDL_EventType event);
12
	//! deactivates a given processor
13
	bool deactivateEvent(EventProcessor* processor, SDL_EventType event);
14
};
15
16
bool EventController::registerEvent(EventProcessor* processor, SDL_EventType event){
17
	myEvents[event].push_back(processor);
18
	return true;
19
}
20
21
bool EventController::process(SDL_Event event){
22
        bool result = true;
23
        std::vector<EventProcessor*> thisEvent;
24
        try{
25
                thisEvent = myEvents.at(event.type);
26
        } catch (const std::out_of_range &oor){
27
                return false;
28
        }
29
        for(auto& ep : thisEvent){
30
                result = result && ep->process(event);
31
        }
32
        return result;
33
}