diff --git a/Minecraft.Client/Common/App_enums.h b/Minecraft.Client/Common/App_enums.h index e8e0d147e..335cc7069 100644 --- a/Minecraft.Client/Common/App_enums.h +++ b/Minecraft.Client/Common/App_enums.h @@ -134,6 +134,7 @@ enum eGameSetting eGameSetting_MusicVolume=0, eGameSetting_SoundFXVolume, eGameSetting_Gamma, + eGameSetting_FOV, eGameSetting_Difficulty, eGameSetting_Sensitivity_InGame, eGameSetting_Sensitivity_InMenu, diff --git a/Minecraft.Client/Common/App_structs.h b/Minecraft.Client/Common/App_structs.h index a7552ec06..6a6e03546 100644 --- a/Minecraft.Client/Common/App_structs.h +++ b/Minecraft.Client/Common/App_structs.h @@ -65,8 +65,8 @@ typedef struct // In-Menu sensitivity unsigned char ucMenuSensitivity; unsigned char ucInterfaceOpacity; - unsigned char ucPad02;//2 bytes of padding added here - unsigned char usPad03; + unsigned char ucPad02; // 1 byte padding + unsigned char ucFov; // Adding another bitmask flag for more settings for 1.8.2 unsigned int uiBitmaskValues; // 0x00000001 - eGameSetting_Clouds - on diff --git a/Minecraft.Client/Common/Consoles_App.cpp b/Minecraft.Client/Common/Consoles_App.cpp index 21eca0f4d..7c57776c1 100644 --- a/Minecraft.Client/Common/Consoles_App.cpp +++ b/Minecraft.Client/Common/Consoles_App.cpp @@ -836,6 +836,7 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con SetGameSettings(iPad,eGameSetting_MusicVolume,DEFAULT_VOLUME_LEVEL); SetGameSettings(iPad,eGameSetting_SoundFXVolume,DEFAULT_VOLUME_LEVEL); SetGameSettings(iPad,eGameSetting_Gamma,50); + SetGameSettings(iPad,eGameSetting_FOV,0); // 4J-PB - Don't reset the difficult level if we're in-game if(Minecraft::GetInstance()->level==NULL) @@ -1330,6 +1331,7 @@ void CMinecraftApp::ApplyGameSettingsChanged(int iPad) ActionGameSettings(iPad,eGameSetting_MusicVolume ); ActionGameSettings(iPad,eGameSetting_SoundFXVolume ); ActionGameSettings(iPad,eGameSetting_Gamma ); + ActionGameSettings(iPad,eGameSetting_FOV ); ActionGameSettings(iPad,eGameSetting_Difficulty ); ActionGameSettings(iPad,eGameSetting_Sensitivity_InGame ); ActionGameSettings(iPad,eGameSetting_ViewBob ); @@ -1390,7 +1392,15 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal) } break; - case eGameSetting_Difficulty: + case eGameSetting_FOV: + if(iPad==ProfileManager.GetPrimaryPad()) + { + float fovDeg = 70.0f + (float)GameSettingsA[iPad]->ucFov * 40.0f / 100.0f; + pMinecraft->gameRenderer->SetFovVal(fovDeg); + pMinecraft->options->set(Options::Option::FOV, (float)GameSettingsA[iPad]->ucFov / 100.0f); + } + break; + case eGameSetting_Difficulty: if(iPad==ProfileManager.GetPrimaryPad()) { pMinecraft->options->toggle(Options::Option::DIFFICULTY,GameSettingsA[iPad]->usBitmaskValues&0x03); @@ -1849,7 +1859,18 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV GameSettingsA[iPad]->bSettingsChanged=true; } break; - case eGameSetting_Difficulty: + case eGameSetting_FOV: + if(GameSettingsA[iPad]->ucFov!=ucVal) + { + GameSettingsA[iPad]->ucFov=ucVal; + if(iPad==ProfileManager.GetPrimaryPad()) + { + ActionGameSettings(iPad,eVal); + } + GameSettingsA[iPad]->bSettingsChanged=true; + } + break; + case eGameSetting_Difficulty: if((GameSettingsA[iPad]->usBitmaskValues&0x03)!=(ucVal&0x03)) { GameSettingsA[iPad]->usBitmaskValues&=~0x03; @@ -2289,7 +2310,10 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal) case eGameSetting_Gamma: return GameSettingsA[iPad]->ucGamma; break; - case eGameSetting_Difficulty: + case eGameSetting_FOV: + return GameSettingsA[iPad]->ucFov; + break; + case eGameSetting_Difficulty: return GameSettingsA[iPad]->usBitmaskValues&0x0003; break; case eGameSetting_Sensitivity_InGame: diff --git a/Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp b/Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp index af86d4b81..fafcea027 100644 --- a/Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp +++ b/Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp @@ -23,8 +23,10 @@ UIScene_DebugOverlay::UIScene_DebugOverlay(int iPad, void *initData, UILayer *pa Minecraft *pMinecraft = Minecraft::GetInstance(); WCHAR TempString[256]; - swprintf( (WCHAR *)TempString, 256, L"Set fov (%d)", (int)pMinecraft->gameRenderer->GetFovVal()); - m_sliderFov.init(TempString,eControl_FOV,0,100,(int)pMinecraft->gameRenderer->GetFovVal()); + int fovSliderVal = app.GetGameSettings(m_iPad, eGameSetting_FOV); + int fovDeg = 70 + fovSliderVal * 40 / 100; + swprintf( (WCHAR *)TempString, 256, L"Set fov (%d)", fovDeg); + m_sliderFov.init(TempString,eControl_FOV,0,100,fovSliderVal); float currentTime = pMinecraft->level->getLevelData()->getGameTime() % 24000; swprintf( (WCHAR *)TempString, 256, L"Set time (unsafe) (%d)", (int)currentTime); @@ -273,10 +275,15 @@ void UIScene_DebugOverlay::handleSliderMove(F64 sliderId, F64 currentValue) case eControl_FOV: { Minecraft *pMinecraft = Minecraft::GetInstance(); - pMinecraft->gameRenderer->SetFovVal((float)currentValue); + int v = (int)currentValue; + if (v < 0) v = 0; + if (v > 100) v = 100; + int fovDeg = 70 + v * 40 / 100; + pMinecraft->gameRenderer->SetFovVal((float)fovDeg); + app.SetGameSettings(m_iPad, eGameSetting_FOV, v); WCHAR TempString[256]; - swprintf( (WCHAR *)TempString, 256, L"Set fov (%d)", (int)currentValue); + swprintf( (WCHAR *)TempString, 256, L"Set fov (%d)", fovDeg); m_sliderFov.setLabel(TempString); } break; diff --git a/Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp index d442553fd..292b77aff 100644 --- a/Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp @@ -121,7 +121,7 @@ void UIScene_HelpAndOptionsMenu::updateComponents() void UIScene_HelpAndOptionsMenu::handleReload() { -#ifdef _FINAL_BUILD +#ifndef _DEBUG // def _FINAL_BUILD // disable debug settings in release builds removeControl( &m_buttons[BUTTON_HAO_DEBUG], false); #else if(!app.DebugSettingsOn()) removeControl( &m_buttons[BUTTON_HAO_DEBUG], false); diff --git a/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp index d7196849f..db9c1d4d0 100644 --- a/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp @@ -61,7 +61,7 @@ UIScene_InGamePlayerOptionsMenu::UIScene_InGamePlayerOptionsMenu(int iPad, void if(m_editingSelf) { -#if (defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED)) +#ifndef _DEBUG // (defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED)) removeControl( &m_checkboxes[eControl_Op], true ); #else m_checkboxes[eControl_Op].init(L"DEBUG: Creative",eControl_Op,Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode)); @@ -254,7 +254,7 @@ void UIScene_InGamePlayerOptionsMenu::handleReload() if(m_editingSelf) { -#if (defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED)) +#ifndef _DEBUG //(defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED)) removeControl( &m_checkboxes[eControl_Op], true ); #endif @@ -348,7 +348,7 @@ void UIScene_InGamePlayerOptionsMenu::handleInput(int iPad, int key, bool repeat bool cheats = app.GetGameHostOption(eGameHostOption_CheatsEnabled) != 0; if(m_editingSelf) { -#if (defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED)) +#ifndef _DEBUG // (defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED)) #else Player::setPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode,m_checkboxes[eControl_Op].IsChecked()); #endif diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp index 0a76a5e5d..eb489f8cd 100644 --- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp @@ -49,9 +49,10 @@ 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)); - 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)); + int initialFovSlider = app.GetGameSettings(m_iPad, eGameSetting_FOV); + int initialFovDeg = sliderValueToFov(initialFovSlider); + swprintf((WCHAR*)TempString, 256, L"FOV: %d", initialFovDeg); + m_sliderFOV.init(TempString, eControl_FOV, 0, FOV_SLIDER_MAX, initialFovSlider); 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)); @@ -182,6 +183,7 @@ void UIScene_SettingsGraphicsMenu::handleSliderMove(F64 sliderId, F64 currentVal Minecraft* pMinecraft = Minecraft::GetInstance(); int fovValue = sliderValueToFov(value); pMinecraft->gameRenderer->SetFovVal((float)fovValue); + app.SetGameSettings(m_iPad, eGameSetting_FOV, value); WCHAR TempString[256]; swprintf((WCHAR*)TempString, 256, L"FOV: %d", fovValue); m_sliderFOV.setLabel(TempString);