F_IntroResponder, G_Responder: Permit both Title Screen and Intro/titledemo to respond to trigger inputs over JOYAXISRANGE/2

Likewise, the author of this commit uses a trigger for A(ccel)
This commit is contained in:
toaster 2023-03-19 18:06:19 +00:00
parent 6832488117
commit e27a15fd14
2 changed files with 45 additions and 32 deletions

View file

@ -26,6 +26,7 @@
#include "w_wad.h"
#include "z_zone.h"
#include "i_system.h"
#include "i_joy.h"
#include "i_threads.h"
#include "dehacked.h"
#include "g_input.h"
@ -480,40 +481,48 @@ boolean F_IntroResponder(event_t *event)
INT32 key = event->data1;
// remap virtual keys (mouse & joystick buttons)
switch (key)
if (event->type == ev_gamepad_axis && key >= JOYANALOGS
&& (abs(event->data2) > JOYAXISRANGE/2 || abs(event->data3) > JOYAXISRANGE/2))
{
case KEY_MOUSE1:
key = KEY_ENTER;
break;
case KEY_MOUSE1 + 1:
key = KEY_BACKSPACE;
break;
case KEY_JOY1:
case KEY_JOY1 + 2:
key = KEY_ENTER;
break;
case KEY_JOY1 + 3:
key = 'n';
break;
case KEY_JOY1 + 1:
key = KEY_BACKSPACE;
break;
case KEY_HAT1:
key = KEY_UPARROW;
break;
case KEY_HAT1 + 1:
key = KEY_DOWNARROW;
break;
case KEY_HAT1 + 2:
key = KEY_LEFTARROW;
break;
case KEY_HAT1 + 3:
key = KEY_RIGHTARROW;
break;
key = KEY_ENTER;
}
else
{
switch (key)
{
case KEY_MOUSE1:
key = KEY_ENTER;
break;
case KEY_MOUSE1 + 1:
key = KEY_BACKSPACE;
break;
case KEY_JOY1:
case KEY_JOY1 + 2:
key = KEY_ENTER;
break;
case KEY_JOY1 + 3:
key = 'n';
break;
case KEY_JOY1 + 1:
key = KEY_BACKSPACE;
break;
case KEY_HAT1:
key = KEY_UPARROW;
break;
case KEY_HAT1 + 1:
key = KEY_DOWNARROW;
break;
case KEY_HAT1 + 2:
key = KEY_LEFTARROW;
break;
case KEY_HAT1 + 3:
key = KEY_RIGHTARROW;
break;
}
if (event->type != ev_keydown && key != 301)
return false;
if (event->type != ev_keydown && key != 301)
return false;
}
if (key != 27 && key != KEY_ENTER && key != KEY_SPACE && key != KEY_BACKSPACE)
return false;

View file

@ -1671,7 +1671,11 @@ boolean G_Responder(event_t *ev)
if (gameaction == ga_nothing && !demo.quitafterplaying &&
((demo.playback && !modeattacking && !demo.title && !multiplayer) || gamestate == GS_TITLESCREEN))
{
if (ev->type == ev_keydown)
if (ev->type == ev_keydown
|| (ev->type == ev_gamepad_axis && ev->data1 >= JOYANALOGS
&& ((abs(ev->data2) > JOYAXISRANGE/2
|| abs(ev->data3) > JOYAXISRANGE/2))
))
{
M_StartControlPanel();
return true;