From c3a424bf16939a7651359886ef1bea439cab30ec Mon Sep 17 00:00:00 2001 From: ceski <56656010+ceski-1@users.noreply.github.com> Date: Sun, 18 Feb 2024 20:50:28 -0800 Subject: [PATCH] Apply free look toggle to current input type only (#1499) * Apply free look toggle to current input type only * R_SetupMouselook --> R_SetupFreelook * M_UpdateMouseLook --> M_UpdateFreeLook * input_mouselook --> input_freelook --- src/m_input.h | 3 +-- src/m_menu.c | 31 ++++++++++++++++++++----------- src/m_misc.c | 6 +++--- src/r_main.c | 6 +++--- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/m_input.h b/src/m_input.h index fafec1e3..a796be71 100644 --- a/src/m_input.h +++ b/src/m_input.h @@ -41,8 +41,7 @@ enum input_prevweapon, input_nextweapon, - input_mouselook, - input_padlook, + input_freelook, input_weapon1, input_weapon2, diff --git a/src/m_menu.c b/src/m_menu.c index 21bab4d7..7cf4af11 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -2814,7 +2814,7 @@ setup_menu_t keys_settings1[] = // Key Binding screen strings {"Toggles", S_SKIP|S_TITLE, m_null, KB_X, M_SPC}, {"Autorun" , S_INPUT, m_scrn, KB_X, M_SPC, {0}, input_autorun}, - {"Free Look" , S_INPUT, m_scrn, KB_X, M_SPC, {0}, input_mouselook}, + {"Free Look" , S_INPUT, m_scrn, KB_X, M_SPC, {0}, input_freelook}, {"Vertmouse" , S_INPUT, m_scrn, KB_X, M_SPC, {0}, input_novert}, MI_RESET, @@ -4172,7 +4172,7 @@ void M_ResetTimeScale(void) I_SetTimeScale(time_scale); } -static void M_UpdateMouseLook(void) +static void M_UpdateFreeLook(void) { P_UpdateDirectVerticalAiming(); @@ -4226,7 +4226,7 @@ setup_menu_t gen_settings3[] = { {"Double-Click to \"Use\"", S_YESNO, m_null, CNTR_X, M_Y, {"dclick_use"}}, {"Free Look", S_YESNO, m_null, CNTR_X, M_SPC, - {"mouselook"}, 0, M_UpdateMouseLook}, + {"mouselook"}, 0, M_UpdateFreeLook}, // [FG] invert vertical axis {"Invert Look", S_YESNO, m_null, CNTR_X, M_SPC, @@ -4260,7 +4260,7 @@ setup_menu_t gen_settings4[] = { {"joy_layout"}, 0, I_ResetController, str_layout}, {"Free Look", S_YESNO, m_null, CNTR_X, M_SPC, - {"padlook"}, 0, M_UpdateMouseLook}, + {"padlook"}, 0, M_UpdateFreeLook}, {"Invert Look", S_YESNO, m_scrn, CNTR_X, M_SPC, {"joy_invert_look"}}, @@ -4918,7 +4918,7 @@ void M_DrawCredits(void) // killough 10/98: credit screen M_DrawScreenItems(cred_settings); } -static boolean M_ShortcutResponder(void) +static boolean M_ShortcutResponder(const event_t *ev) { // If there is no active menu displayed... @@ -4941,12 +4941,21 @@ static boolean M_ShortcutResponder(void) // return true; // [FG] don't let toggles eat keys } - if (M_InputActivated(input_mouselook)) + if (M_InputActivated(input_freelook)) { - mouselook = !mouselook; - padlook = !padlook; - togglemsg("Free Look %s", mouselook ? "On" : "Off"); - M_UpdateMouseLook(); + if (ev->type == ev_joyb_down) + { + // Gamepad free look toggle only affects gamepad. + padlook = !padlook; + togglemsg("Gamepad Free Look %s", padlook ? "On" : "Off"); + } + else + { + // Keyboard or mouse free look toggle only affects mouse. + mouselook = !mouselook; + togglemsg("Free Look %s", mouselook ? "On" : "Off"); + } + M_UpdateFreeLook(); // return true; // [FG] don't let toggles eat keys } @@ -6383,7 +6392,7 @@ boolean M_Responder (event_t* ev) G_ScreenShot(); } - if (M_ShortcutResponder()) + if (M_ShortcutResponder(ev)) { return true; } diff --git a/src/m_misc.c b/src/m_misc.c index aa3e7b5c..ae16fe9e 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -1159,11 +1159,11 @@ default_t defaults[] = { }, { - "input_mouselook", + "input_freelook", NULL, NULL, {0}, {UL,UL}, input, ss_keys, wad_no, - "key to toggle mouselook", - input_mouselook, { {0, 0} } + "key to toggle free look", + input_freelook, { {0, 0} } }, // [FG] reload current level / go to next level diff --git a/src/r_main.c b/src/r_main.c index 8c45be8b..b220de5a 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -472,7 +472,7 @@ void R_SmoothLight(void) static fixed_t viewpitch; -static void R_SetupMouselook(void) +static void R_SetupFreelook(void) { fixed_t dy; int i; @@ -582,7 +582,7 @@ void R_ExecuteSetViewSize (void) R_InitTextureMapping(); - R_SetupMouselook(); + R_SetupFreelook(); // psprite scales pspritescale = FixedDiv(viewwidth_nonwide, SCREENWIDTH); // killough 11/98 @@ -756,7 +756,7 @@ void R_SetupFrame (player_t *player) if (pitch != viewpitch) { viewpitch = pitch; - R_SetupMouselook(); + R_SetupFreelook(); } // 3-screen display mode.