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 | } |