From e27a15fd14139cb708ab5bd6b86d97665aad6b71 Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 19 Mar 2023 18:06:19 +0000 Subject: [PATCH] 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) --- src/f_finale.c | 71 ++++++++++++++++++++++++++++---------------------- src/g_game.c | 6 ++++- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 12ffa1d0f..c53650f62 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -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; diff --git a/src/g_game.c b/src/g_game.c index 5f43b5b4e..c2f31a035 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -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;