// 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];
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])
{
}
+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 };
{
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;
+//}
}
}