From 65f9f388baca2f86040983659084689f454bcc4c Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Thu, 12 Oct 2006 13:23:19 -0400 Subject: [PATCH] Made the EventManager able to process Events ~Tom --- src/EventManager.cpp | 25 +++++++++++++++++++++++-- src/EventManager.h | 7 +++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/EventManager.cpp b/src/EventManager.cpp index 4d3843e..e26a99d 100644 --- a/src/EventManager.cpp +++ b/src/EventManager.cpp @@ -27,10 +27,31 @@ * @see EventManager.h */ #include "EventManager.h" +#include +#include namespace OpenArena { EventManager::EventManager() { - }; -}; \ No newline at end of file + } + + void EventManager::SendEvent(Event* event) + { + unsigned int index; + + for(index=0; index < eventHandlers.Length(); index++) + { + Event::EventHandler* handler = eventHandlers[index]; + if(handler->Handles(event->GetEventType())) + { + handler->HandleEvent(event); + } + } + } + + void EventManager::RegisterEventHandler(Event::EventHandler* eventHandler) + { + eventHandlers.Insert(eventHandler); + } +}; diff --git a/src/EventManager.h b/src/EventManager.h index f1db6c6..f6431df 100644 --- a/src/EventManager.h +++ b/src/EventManager.h @@ -20,6 +20,9 @@ #ifndef __OpenArena_EventMangaer_h__ #define __OpenArena_EventMangaer_h__ +#include "Events/Event.h" +#include "list.h" + /** * @file EventManager.h * @breif Specification of the EventManager class @@ -36,6 +39,10 @@ namespace OpenArena { public: EventManager(); + void SendEvent(Event* event); + void RegisterEventHandler(Event::EventHandler* eventHandler); + private: + list eventHandlers; }; } #endif /*__OpenArena_EventMangaer_h__*/