aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-04 21:19:40 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-05 01:12:48 +0800
commit1dc8a005ed111463c22c17b487e5ec8a3e2d30f3 (patch)
tree8f1825364bf14178f720ee124b01de78afa16d40 /Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
parentac03b88a907bb49f5159f08de07398f3fce32991 (diff)
refactor: refactor KBM input code
Diffstat (limited to 'Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp')
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp38
1 files changed, 34 insertions, 4 deletions
diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
index 9bf3b983..0a76a5e5 100644
--- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
@@ -4,6 +4,33 @@
#include "..\..\Minecraft.h"
#include "..\..\GameRenderer.h"
+namespace
+{
+ const int FOV_MIN = 70;
+ const int FOV_MAX = 110;
+ const int FOV_SLIDER_MAX = 100;
+
+ int clampFov(int value)
+ {
+ if (value < FOV_MIN) return FOV_MIN;
+ if (value > FOV_MAX) return FOV_MAX;
+ return value;
+ }
+
+ int fovToSliderValue(float fov)
+ {
+ int clampedFov = clampFov((int)(fov + 0.5f));
+ return ((clampedFov - FOV_MIN) * FOV_SLIDER_MAX) / (FOV_MAX - FOV_MIN);
+ }
+
+ int sliderValueToFov(int sliderValue)
+ {
+ if (sliderValue < 0) sliderValue = 0;
+ if (sliderValue > FOV_SLIDER_MAX) sliderValue = FOV_SLIDER_MAX;
+ return FOV_MIN + ((sliderValue * (FOV_MAX - FOV_MIN)) / FOV_SLIDER_MAX);
+ }
+}
+
UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
{
// Setup all the Iggy references we need for this scene
@@ -22,8 +49,9 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_GAMMA ),app.GetGameSettings(m_iPad,eGameSetting_Gamma));
m_sliderGamma.init(TempString,eControl_Gamma,0,100,app.GetGameSettings(m_iPad,eGameSetting_Gamma));
- swprintf((WCHAR*)TempString, 256, L"FOV: %d%%", (int)pMinecraft->gameRenderer->GetFovVal());
- m_sliderFOV.init(TempString, eControl_FOV, 70, 110, (int)pMinecraft->gameRenderer->GetFovVal());
+ int initialFov = clampFov((int)(pMinecraft->gameRenderer->GetFovVal() + 0.5f));
+ swprintf((WCHAR*)TempString, 256, L"FOV: %d", initialFov);
+ m_sliderFOV.init(TempString, eControl_FOV, 0, FOV_SLIDER_MAX, fovToSliderValue((float)initialFov));
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_INTERFACEOPACITY ),app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity));
m_sliderInterfaceOpacity.init(TempString,eControl_InterfaceOpacity,0,100,app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity));
@@ -150,10 +178,12 @@ void UIScene_SettingsGraphicsMenu::handleSliderMove(F64 sliderId, F64 currentVal
case eControl_FOV:
{
+ m_sliderFOV.handleSliderMove(value);
Minecraft* pMinecraft = Minecraft::GetInstance();
- pMinecraft->gameRenderer->SetFovVal((float)currentValue);
+ int fovValue = sliderValueToFov(value);
+ pMinecraft->gameRenderer->SetFovVal((float)fovValue);
WCHAR TempString[256];
- swprintf((WCHAR*)TempString, 256, L"FOV: %d%%", (int)currentValue);
+ swprintf((WCHAR*)TempString, 256, L"FOV: %d", fovValue);
m_sliderFOV.setLabel(TempString);
}
break;