Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //! Controls the event processors, effectively a singleton
- class EventController{
- protected:
- std::map<SDL_EventType, std::vector<EventProcessor*> > myEvents;
- // std::unique_lock<std::mutex> eLock;
- public:
- //! passes the event on to the processors registered for it.
- bool process(SDL_Event event);
- //! Registers a new processor
- bool registerEvent(EventProcessor* processor, SDL_EventType event);
- //! deactivates a given processor
- bool deactivateEvent(EventProcessor* processor, SDL_EventType event);
- };
- bool EventController::registerEvent(EventProcessor* processor, SDL_EventType event){
- myEvents[event].push_back(processor);
- return true;
- }
- bool EventController::process(SDL_Event event){
- bool result = true;
- std::vector<EventProcessor*> thisEvent;
- try{
- thisEvent = myEvents.at(event.type);
- } catch (const std::out_of_range &oor){
- return false;
- }
- for(auto& ep : thisEvent){
- result = result && ep->process(event);
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement