1 #ifndef _INPUT_SW_MAN_H
2 #define _INPUT_SW_MAN_H
3 
4 #include "glSDL.h"
5 #include <string.h>
6 
7 const int JOYSTICK_THRESHOLD = 25000;
8 
9 class InputSwitch
10 {
11   public:
12 
isup(isup)13     InputSwitch(bool isup = false) : isup(isup) {}
~InputSwitch()14     virtual ~InputSwitch() {}
15     virtual const char *name() const = 0;
16     virtual int id() const = 0;
17 
18     inline bool operator==(const InputSwitch &other) const {
19       return id() == other.id();
20     }
21 
isUp()22     inline bool isUp()   const { return isup; }
isDown()23     inline bool isDown() const { return !isup; }
24 
25     /* Meta-Informations about the switch */
isArrowUp()26     virtual bool isArrowUp()   const { return false; }
isArrowDown()27     virtual bool isArrowDown() const { return false; }
isValidate()28     virtual bool isValidate()  const { return false; }
isCancel()29     virtual bool isCancel()    const { return false; }
isPause()30     virtual bool isPause()     const { return false; }
31 
32   private:
33     bool isup;
34 };
35 
36 void initControllers();
37 void closeControllers();
38 
39 InputSwitch *switchForEvent(SDL_Event *e);
40 InputSwitch *waitInputSwitch();
41 InputSwitch *checkInputSwitch();
42 
43 class KeyInputSwitch : public InputSwitch
44 {
45   public:
46     KeyInputSwitch(int keysym, bool isup);
47     const char *name() const;
48     int id() const;
49 
50     virtual bool isArrowUp()   const;
51     virtual bool isArrowDown() const;
52     virtual bool isValidate()  const;
53     virtual bool isCancel()    const;
54     virtual bool isPause()     const;
55 
56   private:
57     int keysym;
58     mutable char keyName[256];
59 };
60 
61 class JoystickSwitch : public InputSwitch
62 {
63   private:
64     int which;
65     int button;
66     mutable char keyName[256];
67 
68   public:
69     JoystickSwitch(int which, int button, bool isup);
70     const char *name() const;
71     int id() const;
72 
73     virtual bool isValidate()  const;
74     virtual bool isCancel()    const;
75 };
76 
77 class JoystickAxisSwitch : public InputSwitch
78 {
79   private:
80     int which;
81     int axis;
82     bool maximum;
83     mutable char keyName[256];
84 
85   public:
86     JoystickAxisSwitch(int which, int axis, bool maximum, bool isup);
87     const char *name() const;
88     int id() const;
89 
90     virtual bool isArrowUp()   const;
91     virtual bool isArrowDown() const;
92 };
93 
94 class InputFromIDAndName : public InputSwitch
95 {
96   int _id;
97   char _name[256];
98   public:
InputFromIDAndName(int _id,const char * _name)99   InputFromIDAndName(int _id, const char *_name) : _id(_id) {strcpy(this->_name, _name);}
name()100   const char *name() const { return _name; }
id()101   int id() const           { return _id; }
102 };
103 
104 #endif
105