Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/event/event_handler.h @ 8728

Last change on this file since 8728 was 8623, checked in by bensch, 18 years ago

orxonox/trunk: merged the network branche back here
merged with command:
svn merge -r8230:HEAD https://svn.orxonox.net/orxonox/branches/network .
conflicts resolved in favour of the network branche (conflicts were in network)

File size: 2.5 KB
Line 
1/*!
2 * @file event_handler.h
3 * Definition of the EventHandler
4 *
5 */
6
7#ifndef _EVENT_HANDLER_H
8#define _EVENT_HANDLER_H
9
10#include "base_object.h"
11#include "key_mapper.h"
12#include "event_def.h"
13#include "event.h"
14#include <stack>
15#include <vector>
16
17// FORWARD DECLARATION
18class EventListener;
19
20//! The one Event Handler from Orxonox
21class EventHandler : public BaseObject
22{
23
24public:
25  virtual ~EventHandler();
26  /** @returns a Pointer to the only object of this Class */
27  inline static EventHandler* getInstance() { if (!singletonRef) singletonRef = new EventHandler();  return singletonRef; };
28  void init();
29
30  void setState(elState state);
31  /** @returns the current state */
32inline elState getState() const { return this->state; };
33
34  void pushState(elState state);
35  elState popState();
36
37  void subscribe(EventListener* el, elState state, int eventType);
38  void unsubscribe(EventListener* el, elState state, int eventType);
39  void unsubscribe(EventListener* el, elState state = ES_ALL);
40  void flush(elState state);
41  /** @returns true, if the @param state has @param eventType subscribed?? */
42  bool isSubscribed(elState state, int eventType);
43
44
45  void withUNICODE(elState state, bool enableUNICODE);
46  void grabEvents(bool grabEvents);
47  bool grabbedEvents() const { return this->eventsGrabbed; };
48
49  void process() const;
50  void dispachEvent(elState state, const Event& event) const;
51
52  static int eventFilter(const SDL_Event *event);
53  void debug() const;
54
55  static const std::string& ELStateToString(elState state);
56  static elState StringToELState(const std::string& stateName);
57
58  static int releaseMouse(void* p);
59
60private:
61  EventHandler();
62
63  bool findListener(std::vector<EventListener*>::iterator* it, elState state, int eventType, EventListener* listener);
64
65public:
66  static const std::string     stateNames[];
67
68private:
69  static EventHandler*         singletonRef;                    //!< the singleton reference
70
71  std::vector<EventListener*>  listeners[ES_NUMBER][EV_NUMBER]; //!< a list of registered listeners.
72  elState                      state;                           //!< the state of the event handlder.
73  std::stack<short>            stateStack;                      //!< a stack for the States we are in.
74  KeyMapper                    keyMapper;                       //!< reference to the key mapper.
75
76  bool                         bUNICODE[ES_NUMBER];             //!< If unicode should be enabled.
77  bool                         eventsGrabbed;                   //!< If the events should be grabbed
78};
79
80
81#endif /* _EVENT_HANDLER_H */
Note: See TracBrowser for help on using the repository browser.