mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-01-14 13:51:31 +00:00
Restore a change lost in the merge madness, do some SDL_GameController prep
This commit is contained in:
parent
5fe81afeaa
commit
2927812ec4
4 changed files with 70 additions and 49 deletions
76
src/m_menu.c
76
src/m_menu.c
|
@ -2461,44 +2461,42 @@ boolean M_Responder(event_t *ev)
|
||||||
// (but still allow shift keyup so caps doesn't get stuck)
|
// (but still allow shift keyup so caps doesn't get stuck)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
else if (ev->type == ev_keydown)
|
||||||
|
{
|
||||||
|
ch = ev->data1;
|
||||||
|
|
||||||
|
// added 5-2-98 remap virtual keys (mouse & joystick buttons)
|
||||||
|
switch (ch)
|
||||||
|
{
|
||||||
|
case KEY_MOUSE1:
|
||||||
|
//case KEY_JOY1:
|
||||||
|
//case KEY_JOY1 + 2:
|
||||||
|
ch = KEY_ENTER;
|
||||||
|
break;
|
||||||
|
/*case KEY_JOY1 + 3: // Brake can function as 'n' for message boxes now.
|
||||||
|
ch = 'n';
|
||||||
|
break;*/
|
||||||
|
case KEY_MOUSE1 + 1:
|
||||||
|
//case KEY_JOY1 + 1:
|
||||||
|
ch = KEY_BACKSPACE;
|
||||||
|
break;
|
||||||
|
case KEY_HAT1:
|
||||||
|
ch = KEY_UPARROW;
|
||||||
|
break;
|
||||||
|
case KEY_HAT1 + 1:
|
||||||
|
ch = KEY_DOWNARROW;
|
||||||
|
break;
|
||||||
|
case KEY_HAT1 + 2:
|
||||||
|
ch = KEY_LEFTARROW;
|
||||||
|
break;
|
||||||
|
case KEY_HAT1 + 3:
|
||||||
|
ch = KEY_RIGHTARROW;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (menuactive)
|
else if (menuactive)
|
||||||
{
|
{
|
||||||
if (ev->type == ev_keydown)
|
if (ev->type == ev_joystick && ev->data1 == 0 && joywait < I_GetTime())
|
||||||
{
|
|
||||||
ch = ev->data1;
|
|
||||||
|
|
||||||
// added 5-2-98 remap virtual keys (mouse & joystick buttons)
|
|
||||||
switch (ch)
|
|
||||||
{
|
|
||||||
case KEY_MOUSE1:
|
|
||||||
case KEY_JOY1:
|
|
||||||
ch = KEY_ENTER;
|
|
||||||
break;
|
|
||||||
case KEY_JOY1 + 3:
|
|
||||||
ch = 'n';
|
|
||||||
break;
|
|
||||||
case KEY_MOUSE1 + 1:
|
|
||||||
case KEY_JOY1 + 1:
|
|
||||||
ch = KEY_ESCAPE;
|
|
||||||
break;
|
|
||||||
case KEY_JOY1 + 2:
|
|
||||||
ch = KEY_BACKSPACE;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1:
|
|
||||||
ch = KEY_UPARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 1:
|
|
||||||
ch = KEY_DOWNARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 2:
|
|
||||||
ch = KEY_LEFTARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 3:
|
|
||||||
ch = KEY_RIGHTARROW;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (ev->type == ev_joystick && ev->data1 == 0 && joywait < I_GetTime())
|
|
||||||
{
|
{
|
||||||
const INT32 jdeadzone = JOYAXISRANGE/4;
|
const INT32 jdeadzone = JOYAXISRANGE/4;
|
||||||
if (ev->data3 != INT32_MAX)
|
if (ev->data3 != INT32_MAX)
|
||||||
|
@ -2579,6 +2577,8 @@ boolean M_Responder(event_t *ev)
|
||||||
return false;
|
return false;
|
||||||
else if (ch == gamecontrol[gc_systemmenu][0] || ch == gamecontrol[gc_systemmenu][1]) // allow remappable ESC key
|
else if (ch == gamecontrol[gc_systemmenu][0] || ch == gamecontrol[gc_systemmenu][1]) // allow remappable ESC key
|
||||||
ch = KEY_ESCAPE;
|
ch = KEY_ESCAPE;
|
||||||
|
else if (ch == gamecontrol[gc_accelerate][0] || ch == gamecontrol[gc_accelerate][1])
|
||||||
|
ch = KEY_ENTER;
|
||||||
|
|
||||||
// F-Keys
|
// F-Keys
|
||||||
if (!menuactive)
|
if (!menuactive)
|
||||||
|
@ -2655,6 +2655,9 @@ boolean M_Responder(event_t *ev)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ch == gamecontrol[gc_brake][0] || ch == gamecontrol[gc_brake][1]) // do this here, otherwise brake opens the menu mid-game
|
||||||
|
ch = KEY_ESCAPE;
|
||||||
|
|
||||||
routine = currentMenu->menuitems[itemOn].itemaction;
|
routine = currentMenu->menuitems[itemOn].itemaction;
|
||||||
|
|
||||||
// Handle menuitems which need a specific key handling
|
// Handle menuitems which need a specific key handling
|
||||||
|
@ -2789,6 +2792,7 @@ boolean M_Responder(event_t *ev)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case KEY_ESCAPE:
|
case KEY_ESCAPE:
|
||||||
|
//case KEY_JOY1 + 2:
|
||||||
noFurtherInput = true;
|
noFurtherInput = true;
|
||||||
currentMenu->lastOn = itemOn;
|
currentMenu->lastOn = itemOn;
|
||||||
if (currentMenu->prevMenu)
|
if (currentMenu->prevMenu)
|
||||||
|
|
|
@ -193,11 +193,12 @@ static char returnWadPath[256];
|
||||||
*/
|
*/
|
||||||
static void JoyReset(SDLJoyInfo_t *JoySet)
|
static void JoyReset(SDLJoyInfo_t *JoySet)
|
||||||
{
|
{
|
||||||
if (JoySet->dev)
|
if (JoySet->gamepad)
|
||||||
{
|
SDL_GameControllerClose(JoySet->gamepad);
|
||||||
|
else if (JoySet->dev)
|
||||||
SDL_JoystickClose(JoySet->dev);
|
SDL_JoystickClose(JoySet->dev);
|
||||||
}
|
|
||||||
JoySet->dev = NULL;
|
JoySet->dev = NULL;
|
||||||
|
JoySet->gamepad = NULL;
|
||||||
JoySet->oldjoy = -1;
|
JoySet->oldjoy = -1;
|
||||||
JoySet->axises = JoySet->buttons = JoySet->hats = JoySet->balls = 0;
|
JoySet->axises = JoySet->buttons = JoySet->hats = JoySet->balls = 0;
|
||||||
//JoySet->scale
|
//JoySet->scale
|
||||||
|
@ -1051,9 +1052,10 @@ static int joy_open(const char *fname)
|
||||||
{
|
{
|
||||||
int joyindex = atoi(fname);
|
int joyindex = atoi(fname);
|
||||||
int num_joy = 0;
|
int num_joy = 0;
|
||||||
|
int num_gc = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (SDL_WasInit(SDL_INIT_JOYSTICK) == 0)
|
if (SDL_WasInit(SDL_INIT_GAMECONTROLLER) == 0)
|
||||||
{
|
{
|
||||||
CONS_Printf(M_GetText("Joystick subsystem not started\n"));
|
CONS_Printf(M_GetText("Joystick subsystem not started\n"));
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1073,7 +1075,14 @@ static int joy_open(const char *fname)
|
||||||
{
|
{
|
||||||
CONS_Printf(M_GetText("Found %d joysticks on this system\n"), num_joy);
|
CONS_Printf(M_GetText("Found %d joysticks on this system\n"), num_joy);
|
||||||
for (i = 0; i < num_joy; i++)
|
for (i = 0; i < num_joy; i++)
|
||||||
CONS_Printf("#%d/(%s)\n", i+1, SDL_JoystickNameForIndex(i));
|
{
|
||||||
|
if (SDL_IsGameController(i))
|
||||||
|
{
|
||||||
|
num_gc++;
|
||||||
|
CONS_Printf("#%d/(%s) GC\n", i + 1, SDL_GameControllerNameForIndex(i));
|
||||||
|
}
|
||||||
|
CONS_Printf("#%d/(%s)\n", i + 1, SDL_JoystickNameForIndex(i));
|
||||||
|
}
|
||||||
|
|
||||||
if (num_joy < joyindex)
|
if (num_joy < joyindex)
|
||||||
{
|
{
|
||||||
|
@ -1089,8 +1098,13 @@ static int joy_open(const char *fname)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (SDL_IsGameController(joyindex - 1))
|
||||||
JoyInfo.dev = SDL_JoystickOpen(joyindex-1);
|
{
|
||||||
|
JoyInfo.gamepad = SDL_GameControllerOpen(joyindex - 1);
|
||||||
|
JoyInfo.dev = SDL_GameControllerGetJoystick(JoyInfo.gamepad);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
JoyInfo.dev = SDL_JoystickOpen(joyindex-1);
|
||||||
|
|
||||||
if (JoyInfo.dev == NULL)
|
if (JoyInfo.dev == NULL)
|
||||||
{
|
{
|
||||||
|
@ -1968,14 +1982,14 @@ static int joy_open4(const char *fname)
|
||||||
void I_InitJoystick(void)
|
void I_InitJoystick(void)
|
||||||
{
|
{
|
||||||
//I_ShutdownJoystick();
|
//I_ShutdownJoystick();
|
||||||
SDL_SetHintWithPriority("SDL_XINPUT_ENABLED", "0", SDL_HINT_OVERRIDE);
|
//SDL_SetHintWithPriority("SDL_XINPUT_ENABLED", "0", SDL_HINT_OVERRIDE);
|
||||||
if (M_CheckParm("-nojoy"))
|
if (M_CheckParm("-nojoy"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (SDL_WasInit(SDL_INIT_JOYSTICK) == 0)
|
if (SDL_WasInit(SDL_INIT_GAMECONTROLLER) == 0)
|
||||||
{
|
{
|
||||||
CONS_Printf("Initing joy system\n");
|
CONS_Printf("Initing joy system\n");
|
||||||
if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) == -1)
|
if (SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER) == -1)
|
||||||
{
|
{
|
||||||
CONS_Printf(M_GetText("Couldn't initialize joystick: %s\n"), SDL_GetError());
|
CONS_Printf(M_GetText("Couldn't initialize joystick: %s\n"), SDL_GetError());
|
||||||
return;
|
return;
|
||||||
|
@ -1999,7 +2013,7 @@ void I_InitJoystick(void)
|
||||||
void I_InitJoystick2(void)
|
void I_InitJoystick2(void)
|
||||||
{
|
{
|
||||||
//I_ShutdownJoystick2();
|
//I_ShutdownJoystick2();
|
||||||
SDL_SetHintWithPriority("SDL_XINPUT_ENABLED", "0", SDL_HINT_OVERRIDE);
|
//SDL_SetHintWithPriority("SDL_XINPUT_ENABLED", "0", SDL_HINT_OVERRIDE);
|
||||||
if (M_CheckParm("-nojoy"))
|
if (M_CheckParm("-nojoy"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -2068,12 +2082,12 @@ static void I_ShutdownInput(void)
|
||||||
I_ShutdownJoystick();
|
I_ShutdownJoystick();
|
||||||
I_ShutdownJoystick2();
|
I_ShutdownJoystick2();
|
||||||
|
|
||||||
if (SDL_WasInit(SDL_INIT_JOYSTICK) == SDL_INIT_JOYSTICK)
|
if (SDL_WasInit(SDL_INIT_GAMECONTROLLER) == SDL_INIT_GAMECONTROLLER)
|
||||||
{
|
{
|
||||||
CONS_Printf("Shutting down joy system\n");
|
CONS_Printf("Shutting down joy system\n");
|
||||||
JoyReset(&JoyInfo3);
|
JoyReset(&JoyInfo3);
|
||||||
JoyReset(&JoyInfo4);
|
JoyReset(&JoyInfo4);
|
||||||
SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
|
SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER);
|
||||||
I_OutputMsg("I_Joystick: SDL's Joystick system has been shutdown\n");
|
I_OutputMsg("I_Joystick: SDL's Joystick system has been shutdown\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,7 @@
|
||||||
#include "../console.h"
|
#include "../console.h"
|
||||||
#include "../command.h"
|
#include "../command.h"
|
||||||
#include "sdlmain.h"
|
#include "sdlmain.h"
|
||||||
|
#include "../i_system.h"
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
#include "../hardware/hw_main.h"
|
#include "../hardware/hw_main.h"
|
||||||
#include "../hardware/hw_drv.h"
|
#include "../hardware/hw_drv.h"
|
||||||
|
|
|
@ -39,6 +39,8 @@ typedef struct SDLJoyInfo_s
|
||||||
{
|
{
|
||||||
/// Joystick handle
|
/// Joystick handle
|
||||||
SDL_Joystick *dev;
|
SDL_Joystick *dev;
|
||||||
|
/// GameController handle
|
||||||
|
SDL_GameController *gamepad;
|
||||||
/// number of old joystick
|
/// number of old joystick
|
||||||
int oldjoy;
|
int oldjoy;
|
||||||
/// number of axies
|
/// number of axies
|
||||||
|
|
Loading…
Reference in a new issue