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