Skip to content

Commit a205ec6

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

3 files changed

Lines changed: 23 additions & 7 deletions

File tree

engine/h2shared/in_sdl.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ static int buttonremap[] =
5252
static SDL_Joystick *joy_id = NULL;
5353
static int joy_available;
5454

55-
static cvar_t in_joystick = {"joystick", "0", CVAR_ARCHIVE}; /* enable/disable joystick */
55+
static cvar_t in_joystick = {"joystick", "1", CVAR_ARCHIVE}; /* enable/disable joystick */
5656

5757
static cvar_t joy_index = {"joy_index", "0", CVAR_NONE}; /* joystick to use when have multiple */
5858
static cvar_t joy_axisforward = {"joy_axisforward", "1", CVAR_NONE}; /* axis for forward/backward movement */
@@ -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 /* not for now */
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 */
@@ -1102,13 +1102,23 @@ void IN_SendKeyEvents (void)
11021102
case SDL_JOYBUTTONUP:
11031103
if (in_mode_set)
11041104
break;
1105+
uint8_t key = 0;
1106+
switch (K_JOY1 + event.jbutton.button) {
1107+
/* Hard code SELECT & START buttons for menu control */
1108+
case K_AUX5:
1109+
key = K_ESCAPE;
1110+
break;
1111+
case K_AUX6:
1112+
key = K_ENTER;
1113+
}
1114+
Con_DPrintf ("Pressed joystick button %s\n", Key_KeynumToString(K_JOY1 + event.jbutton.button));
11051115
if (event.jbutton.button > K_AUX28 - K_JOY1)
11061116
{
11071117
Con_Printf ("Ignored event for joystick button %d\n",
11081118
event.jbutton.button);
11091119
break;
11101120
}
1111-
Key_Event(K_JOY1 + event.jbutton.button, event.jbutton.state == SDL_PRESSED);
1121+
Key_Event(key ? key : (K_JOY1 + event.jbutton.button), event.jbutton.state == SDL_PRESSED);
11121122
break;
11131123

11141124
/* 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)