Advertisement
Guest User

Untitled

a guest
Aug 28th, 2014
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement