]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/gui/gamepad.cpp
Fixed updated joystick handling, first major stab at gamepad profiles.
[virtualjaguar] / src / gui / gamepad.cpp
index 62a6d7a9bef851d932aba79f87c305fc3a2aa36b..93989eed7ae7a975ecdec6d39469f23e06809da6 100644 (file)
@@ -18,6 +18,7 @@
 // Class member initialization
 /*static*/ int Gamepad::numJoysticks = 0;
 /*static*/ SDL_Joystick * Gamepad::pad[8];
+/*static*/ const char * Gamepad::padName[8];
 /*static*/ int Gamepad::numButtons[8];
 /*static*/ int Gamepad::numHats[8];
 /*static*/ int Gamepad::numAxes[8];
@@ -50,7 +51,8 @@ void Gamepad::AllocateJoysticks(void)
        for(int i=0; i<numJoysticks; i++)
        {
                pad[i] = SDL_JoystickOpen(i);
-               numButtons[i] = numHats[i] = 0;
+               padName[i] = SDL_JoystickName(i);
+               numButtons[i] = numHats[i] = numAxes[i] = 0;
 
                if (pad[i])
                {
@@ -71,6 +73,16 @@ void Gamepad::DeallocateJoysticks(void)
 }
 
 
+const char * Gamepad::GetJoystickName(int joystickID)
+{
+       // Sanity check
+       if (joystickID >= 8)
+               return NULL;
+
+       return padName[joystickID];
+}
+
+
 bool Gamepad::GetState(int joystickID, int buttonID)
 {
        uint8_t hatMask[8] = { 1, 2, 4, 8, 16, 32, 64, 128 };
@@ -92,14 +104,21 @@ bool Gamepad::GetState(int joystickID, int buttonID)
        {
                int axisNum = (buttonID & JOY_AXISNUM_MASK) >> 1;
                int direction = (buttonID & JOY_AXISDIR_MASK);
+//printf("Checking pad #%u axis %u: axis = %i, direction = %u\n", joystickID, axisNum, axis[joystickID][axisNum], direction);
 
                if (axis[joystickID][axisNum] != 0)
                {
-                       if (axis[joystickID][axisNum] > 16000 && (direction == 0))
+                       if ((axis[joystickID][axisNum] > 32000) && (direction == 0))
+//{
+//printf("Axis + hit!\n");
                                return true;
+//}
 
-                       if (axis[joystickID][axisNum] < -16000 && (direction == 1))
+                       if ((axis[joystickID][axisNum] < -32000) && (direction == 1))
+//{
+//printf("Axis - hit!\n");
                                return true;
+//}
                }
        }