Skip to content

Commit f98c3cc

Browse files
author
twojstaryzdomu
committed
Joypad control in menus
1 parent 42f80c4 commit f98c3cc

3 files changed

Lines changed: 22 additions & 7 deletions

File tree

engine/h2shared/in_sdl.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ static cvar_t joy_sensitivityyaw = {"joy_sensitivityyaw", "-1", CVAR_NONE}; /*
7575
/* hack to generate uparrow/leftarrow etc. key events
7676
* for axes if the stick driver isn't generating them. */
7777
/* might be useful for menu navigation etc. */
78-
#define JOY_KEYEVENT_FOR_AXES 0 /* not for now */
78+
#define JOY_KEYEVENT_FOR_AXES 1
7979
#if (JOY_KEYEVENT_FOR_AXES)
80-
static cvar_t joy_axiskeyevents = {"joy_axiskeyevents", "0", CVAR_ARCHIVE};
80+
static cvar_t joy_axiskeyevents = {"joy_axiskeyevents", "1", CVAR_ARCHIVE};
8181
static cvar_t joy_axiskeyevents_deadzone = {"joy_axiskeyevents_deadzone", "0.5", CVAR_ARCHIVE};
8282

8383
/* joystick axes state */
@@ -811,7 +811,7 @@ void IN_Commands (void)
811811
void IN_SendKeyEvents (void)
812812
{
813813
SDL_Event event;
814-
int sym, state, modstate;
814+
int sym, state, modstate, joy2key;
815815
qboolean gamekey;
816816

817817
if ((gamekey = Key_IsGameKey()) != prev_gamekey)
@@ -1102,13 +1102,22 @@ void IN_SendKeyEvents (void)
11021102
case SDL_JOYBUTTONUP:
11031103
if (in_mode_set)
11041104
break;
1105+
switch (K_JOY1 + event.jbutton.button) {
1106+
/* Hard code SELECT & START buttons for menu control */
1107+
case K_AUX5:
1108+
joy2key = K_ESCAPE;
1109+
break;
1110+
case K_AUX6:
1111+
joy2key = K_ENTER;
1112+
}
1113+
Con_DPrintf ("Pressed joystick button %s\n", Key_KeynumToString(K_JOY1 + event.jbutton.button));
11051114
if (event.jbutton.button > K_AUX28 - K_JOY1)
11061115
{
11071116
Con_Printf ("Ignored event for joystick button %d\n",
11081117
event.jbutton.button);
11091118
break;
11101119
}
1111-
Key_Event(K_JOY1 + event.jbutton.button, event.jbutton.state == SDL_PRESSED);
1120+
Key_Event(joy2key ? joy2key : (K_JOY1 + event.jbutton.button), event.jbutton.state == SDL_PRESSED);
11121121
break;
11131122

11141123
/* mouse/trackball motion handled by IN_MouseMove() */

engine/hexen2/cl_main.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -907,9 +907,6 @@ void CL_SendCmd (void)
907907
{
908908
usercmd_t cmd;
909909

910-
if (cls.state != ca_connected)
911-
return;
912-
913910
if (cls.signon == SIGNONS)
914911
{
915912
// get basic movement from keyboard
@@ -921,6 +918,14 @@ void CL_SendCmd (void)
921918
// send the unreliable message
922919
CL_SendMove (&cmd);
923920
}
921+
else
922+
{
923+
// enable directional joypad input in menus
924+
IN_Move (&cmd);
925+
}
926+
927+
if (cls.state != ca_connected)
928+
return;
924929

925930
if (cls.demoplayback)
926931
{

engine/hexen2/menu.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3494,6 +3494,7 @@ static void M_Quit_Key (int key)
34943494
}
34953495
break;
34963496

3497+
case K_ENTER:
34973498
case 'Y':
34983499
case 'y':
34993500
Key_SetDest (key_console);

0 commit comments

Comments
 (0)