00001 #ifndef _INPUTHANDLER_H_
00002 #define _INPUTHANDLER_H_
00003
00004 #include "TSingleton.h"
00005 #include "SDL.h"
00006
00007
00008
00009 enum eInputKey
00010 {
00011 eKeyUp = 0,
00012 eKeyUpLeft,
00013 eKeyUpRight,
00014 eKeyDown,
00015 eKeyDownLeft,
00016 eKeyDownRight,
00017 eKeyLeft,
00018 eKeyRight,
00019 eKeyButtonX,
00020 eKeyButtonY,
00021 eKeyButtonA,
00022 eKeyButtonB,
00023 eKeyButtonL,
00024 eKeyButtonR,
00025 eKeyButtonStart,
00026 eKeyButtonSelect,
00027 eKeyButtonVolumeUp,
00028 eKeyButtonVolumeDown,
00029 eKeyUndefined,
00030 eNumInputKeys
00031 };
00032
00033 class InputHandler : public TSingleton<InputHandler>
00034 {
00035 public:
00036 InputHandler();
00037 ~InputHandler();
00038
00039 void Update();
00040
00041 bool IsKeyDown(const eInputKey &key);
00042
00043 protected:
00044 void RegisterKeyValue(const eInputKey &key, const bool &bIsDown);
00045
00046 #ifdef _GP2X
00047 eInputKey ConvertGP2XToEnum(const Uint8 &button);
00048 int ConvertEnumToGP2X(const eInputKey &keyType);
00049
00050 SDL_Joystick* m_pJoystick;
00051 #endif
00052
00053 bool m_keyArray[eNumInputKeys];
00054 };
00055
00056
00057 #ifdef _GP2X
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 #define GP2X_BUTTON_UP (0)
00080 #define GP2X_BUTTON_DOWN (4)
00081 #define GP2X_BUTTON_LEFT (2)
00082 #define GP2X_BUTTON_RIGHT (6)
00083 #define GP2X_BUTTON_UPLEFT (1)
00084 #define GP2X_BUTTON_UPRIGHT (7)
00085 #define GP2X_BUTTON_DOWNLEFT (3)
00086 #define GP2X_BUTTON_DOWNRIGHT (5)
00087 #define GP2X_BUTTON_CLICK (18)
00088 #define GP2X_BUTTON_A (12)
00089 #define GP2X_BUTTON_B (13)
00090 #define GP2X_BUTTON_Y (14)
00091 #define GP2X_BUTTON_X (15)
00092 #define GP2X_BUTTON_L (10)
00093 #define GP2X_BUTTON_R (11)
00094 #define GP2X_BUTTON_START (8)
00095 #define GP2X_BUTTON_SELECT (9)
00096 #define GP2X_BUTTON_VOLUP (16)
00097 #define GP2X_BUTTON_VOLDOWN (17)
00098
00099 #endif
00100
00101 #endif