From 903dd82ebfa175e6d045e8697020c004b1973cc9 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 8 Dec 2024 13:39:21 +0100 Subject: [PATCH] port: alternate fix for #548 --- port/src/optionsmenu.c | 2 ++ src/game/player.c | 16 ++++++++++++++++ src/include/game/player.h | 1 + 3 files changed, 19 insertions(+) diff --git a/port/src/optionsmenu.c b/port/src/optionsmenu.c index 2b845ebe0..ae988425b 100644 --- a/port/src/optionsmenu.c +++ b/port/src/optionsmenu.c @@ -9,6 +9,7 @@ #include "game/mainmenu.h" #include "game/menu.h" #include "game/gamefile.h" +#include "game/player.h" #include "video.h" #include "input.h" #include "config.h" @@ -990,6 +991,7 @@ static MenuItemHandlerResult menuhandlerFieldOfView(s32 operation, struct menuit g_PlayerExtCfg[g_ExtMenuPlayer].fovy = data->slider.value; if (g_PlayerExtCfg[g_ExtMenuPlayer].fovzoom) { g_PlayerExtCfg[g_ExtMenuPlayer].fovzoommult = g_PlayerExtCfg[g_ExtMenuPlayer].fovy / 60.f; + playerClampGunZoomFovY(g_ExtMenuPlayer); } } break; diff --git a/src/game/player.c b/src/game/player.c index 8ca1fc4f5..a0983ef36 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -2103,6 +2103,22 @@ f32 playerGetCutsceneBlurFrac(void) return g_CutsceneBlurFrac; } +void playerClampGunZoomFovY(s32 playernum) +{ + struct player *player = g_Vars.players[playernum]; + if (!player) { + return; + } + + for (s32 index = 0; index < ARRAYCOUNT(player->gunzoomfovs); ++index) { + if (player->gunzoomfovs[index] < ADJUST_ZOOM_FOV(2)) { + player->gunzoomfovs[index] = ADJUST_ZOOM_FOV(2); + } else if (player->gunzoomfovs[index] > ADJUST_ZOOM_FOV(60)) { + player->gunzoomfovs[index] = ADJUST_ZOOM_FOV(60); + } + } +} + void playerSetZoomFovY(f32 fovy, f32 timemax) { g_Vars.currentplayer->zoomintime = 0; diff --git a/src/include/game/player.h b/src/include/game/player.h index 81840b813..9c7a9cf90 100644 --- a/src/include/game/player.h +++ b/src/include/game/player.h @@ -21,6 +21,7 @@ void playerStartCutscene(s16 anim_id); void playerReorientForCutsceneStop(s32 tweenduration60); void playerTickCutscene(bool arg0); f32 playerGetCutsceneBlurFrac(void); +void playerClampGunZoomFovY(s32 playernum); void playerSetZoomFovY(f32 fovy, f32 timemax); f32 playerGetZoomFovY(void); void playerTweenFovY(f32 targetfovy);