Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/gui/src/lib/event/event_handler.h @ 7895

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

orxonox/trunk: fixed a bug in the EventHandler, that resulted from multiple inputs or so…

File size: 2.1 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 <stack>
14#include <vector>
15
16// FORWARD DECLARATION
17class EventListener;
18
19//! The one Event Handler from Orxonox
20class EventHandler : public BaseObject {
21
22 public:
23  virtual ~EventHandler();
24  /** @returns a Pointer to the only object of this Class */
25  inline static EventHandler* getInstance() { if (!singletonRef) singletonRef = new EventHandler();  return singletonRef; };
26  void init();
27
28  void setState(elState state);
29  /** @returns the current state */
30  inline elState getState() const { return this->state; };
31
32  void pushState(elState state);
33  elState popState();
34
35  void subscribe(EventListener* el, elState state, int eventType);
36  void unsubscribe(EventListener* el, elState state, int eventType);
37  void unsubscribe(EventListener* el, elState state = ES_ALL);
38  void flush(elState state);
39  /** @returns true, if the @param state has @param eventType subscribed?? */
40  bool isSubscribed(elState state, int eventType);
41
42
43  void withUNICODE(elState state, bool enableUNICODE);
44  void grabEvents(bool grabEvents);
45  bool grabbedEvents() const { return this->eventsGrabbed; };
46
47  void process();
48
49  static int eventFilter(const SDL_Event *event);
50  void debug() const;
51
52 private:
53  EventHandler();
54
55 private:
56  static EventHandler*         singletonRef;                    //!< the singleton reference
57
58  std::vector<EventListener*>  listeners[ES_NUMBER][EV_NUMBER]; //!< a list of registered listeners.
59  elState                      state;                           //!< the state of the event handlder.
60  std::stack<short>            stateStack;                      //!< a stack for the States we are in.
61  KeyMapper                    keyMapper;                       //!< reference to the key mapper.
62
63  bool                         bUNICODE[ES_NUMBER];             //!< If unicode should be enabled.
64  bool                         eventsGrabbed;                   //!< If the events should be grabbed
65};
66
67
68#endif /* _EVENT_HANDLER_H */
Note: See TracBrowser for help on using the repository browser.