mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-22 04:21:23 +00:00
sdl2: restore joystick code
remarkably it still works even though the API has changed.
This commit is contained in:
parent
6ea03a23b4
commit
080f8e4008
2 changed files with 64 additions and 14 deletions
|
@ -994,10 +994,8 @@ void I_GetJoystickEvents(void)
|
|||
static event_t event = {0,0,0,0};
|
||||
INT32 i = 0;
|
||||
UINT64 joyhats = 0;
|
||||
#if 0
|
||||
UINT64 joybuttons = 0;
|
||||
Sint16 axisx, axisy;
|
||||
#endif
|
||||
|
||||
if (!joystick_started) return;
|
||||
|
||||
|
@ -1070,7 +1068,6 @@ void I_GetJoystickEvents(void)
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
// send joystick axis positions
|
||||
event.type = ev_joystick;
|
||||
|
||||
|
@ -1123,7 +1120,6 @@ void I_GetJoystickEvents(void)
|
|||
}
|
||||
D_PostEvent(&event);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/** \brief Open joystick handle
|
||||
|
@ -1136,8 +1132,6 @@ void I_GetJoystickEvents(void)
|
|||
*/
|
||||
static int joy_open(const char *fname)
|
||||
{
|
||||
return -1; // TODO SDL2 joystick overhaul
|
||||
#if 0
|
||||
int joyindex = atoi(fname);
|
||||
int num_joy = 0;
|
||||
int i;
|
||||
|
@ -1225,7 +1219,6 @@ static int joy_open(const char *fname)
|
|||
|
||||
return JoyInfo.axises;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//Joystick2
|
||||
|
@ -1291,10 +1284,8 @@ void I_GetJoystick2Events(void)
|
|||
static event_t event = {0,0,0,0};
|
||||
INT32 i = 0;
|
||||
UINT64 joyhats = 0;
|
||||
#if 0
|
||||
INT64 joybuttons = 0;
|
||||
INT32 axisx, axisy;
|
||||
#endif
|
||||
|
||||
if (!joystick2_started)
|
||||
return;
|
||||
|
@ -1364,7 +1355,6 @@ void I_GetJoystick2Events(void)
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
// send joystick axis positions
|
||||
event.type = ev_joystick2;
|
||||
|
||||
|
@ -1419,7 +1409,6 @@ void I_GetJoystick2Events(void)
|
|||
}
|
||||
D_PostEvent(&event);
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
@ -1433,8 +1422,6 @@ void I_GetJoystick2Events(void)
|
|||
*/
|
||||
static int joy_open2(const char *fname)
|
||||
{
|
||||
return -1; // TODO SDL2 joystick overhaul
|
||||
#if 0
|
||||
int joyindex = atoi(fname);
|
||||
int num_joy = 0;
|
||||
int i;
|
||||
|
@ -1520,7 +1507,6 @@ static int joy_open2(const char *fname)
|
|||
|
||||
return JoyInfo2.axises;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -918,6 +918,63 @@ static void Impl_HandleMouseWheelEvent(SDL_MouseWheelEvent evt)
|
|||
}
|
||||
}
|
||||
|
||||
static void Impl_HandleJoystickAxisEvent(SDL_JoyAxisEvent evt)
|
||||
{
|
||||
event_t event;
|
||||
|
||||
evt.which++;
|
||||
evt.axis++;
|
||||
event.data1 = event.data2 = event.data3 = INT32_MAX;
|
||||
if (cv_usejoystick.value == evt.which)
|
||||
{
|
||||
event.type = ev_joystick;
|
||||
}
|
||||
else if (cv_usejoystick.value == evt.which)
|
||||
{
|
||||
event.type = ev_joystick2;
|
||||
}
|
||||
else return;
|
||||
//axis
|
||||
if (evt.axis > JOYAXISSET*2)
|
||||
return;
|
||||
//vaule
|
||||
if (evt.axis%2)
|
||||
{
|
||||
event.data1 = evt.axis / 2;
|
||||
event.data2 = SDLJoyAxis(evt.value, event.type);
|
||||
}
|
||||
else
|
||||
{
|
||||
evt.axis--;
|
||||
event.data1 = evt.axis / 2;
|
||||
event.data3 = SDLJoyAxis(evt.value, event.type);
|
||||
}
|
||||
D_PostEvent(&event);
|
||||
}
|
||||
|
||||
static void Impl_HandleJoystickButtonEvent(SDL_JoyButtonEvent evt, Uint32 type)
|
||||
{
|
||||
event_t event;
|
||||
|
||||
evt.which++;
|
||||
if (cv_usejoystick.value == evt.which)
|
||||
event.data1 = KEY_JOY1;
|
||||
else if (cv_usejoystick.value == evt.which)
|
||||
event.data1 = KEY_2JOY1;
|
||||
else return;
|
||||
if (type == SDL_JOYBUTTONUP)
|
||||
event.type = ev_keyup;
|
||||
else if (type == SDL_JOYBUTTONDOWN)
|
||||
event.type = ev_keydown;
|
||||
else return;
|
||||
if (evt.button < JOYBUTTONS)
|
||||
event.data1 += evt.button;
|
||||
else
|
||||
return;
|
||||
SDLJoyRemap(&event);
|
||||
if (event.type != ev_console) D_PostEvent(&event);
|
||||
}
|
||||
|
||||
void I_GetEvent(void)
|
||||
{
|
||||
SDL_Event evt;
|
||||
|
@ -948,6 +1005,13 @@ void I_GetEvent(void)
|
|||
case SDL_MOUSEWHEEL:
|
||||
Impl_HandleMouseWheelEvent(evt.wheel);
|
||||
break;
|
||||
case SDL_JOYAXISMOTION:
|
||||
Impl_HandleJoystickAxisEvent(evt.jaxis);
|
||||
break;
|
||||
case SDL_JOYBUTTONUP:
|
||||
case SDL_JOYBUTTONDOWN:
|
||||
Impl_HandleJoystickButtonEvent(evt.jbutton, evt.type);
|
||||
break;
|
||||
case SDL_QUIT:
|
||||
I_Quit();
|
||||
M_QuitResponse('y');
|
||||
|
|
Loading…
Reference in a new issue