feat: TU34 settings menu

This commit is contained in:
Fireblade 2026-05-08 22:02:20 -04:00
parent b8fe745a53
commit 34884f00fb
24 changed files with 144 additions and 300 deletions

View file

@ -83,7 +83,6 @@
#include "UIScene_SettingsMenu.h"
#include "UIScene_SettingsOptionsMenu.h"
#include "UIScene_SettingsAudioMenu.h"
#include "UIScene_SettingsControlMenu.h"
#include "UIScene_SettingsGraphicsMenu.h"
#include "UIScene_SettingsUIMenu.h"
#include "UIScene_SkinSelectMenu.h"

View file

@ -60,7 +60,6 @@ enum EUIScene
eUIScene_ControlsMenu,
eUIScene_SettingsOptionsMenu,
eUIScene_SettingsAudioMenu,
eUIScene_SettingsControlMenu,
eUIScene_SettingsGraphicsMenu,
eUIScene_SettingsUIMenu,
eUIScene_SettingsMenu,

View file

@ -288,9 +288,6 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData)
case eUIScene_SettingsAudioMenu:
newScene = new UIScene_SettingsAudioMenu(iPad, initData, this);
break;
case eUIScene_SettingsControlMenu:
newScene = new UIScene_SettingsControlMenu(iPad, initData, this);
break;
case eUIScene_SettingsGraphicsMenu:
newScene = new UIScene_SettingsGraphicsMenu(iPad, initData, this);
break;

View file

@ -1,116 +0,0 @@
#include "stdafx.h"
#include "UI.h"
#include "UIScene_SettingsControlMenu.h"
UIScene_SettingsControlMenu::UIScene_SettingsControlMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
{
// Setup all the Iggy references we need for this scene
initialiseMovie();
WCHAR TempString[256];
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_SENSITIVITY_INGAME ),app.GetGameSettings(m_iPad,eGameSetting_Sensitivity_InGame));
m_sliderSensitivityInGame.init(TempString,eControl_SensitivityInGame,0,200,app.GetGameSettings(m_iPad,eGameSetting_Sensitivity_InGame));
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_SENSITIVITY_INMENU ),app.GetGameSettings(m_iPad,eGameSetting_Sensitivity_InMenu));
m_sliderSensitivityInMenu.init(TempString,eControl_SensitivityInMenu,0,200,app.GetGameSettings(m_iPad,eGameSetting_Sensitivity_InMenu));
doHorizontalResizeCheck();
if(app.GetLocalPlayerCount()>1)
{
#if TO_BE_IMPLEMENTED
app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad,false);
#endif
}
}
UIScene_SettingsControlMenu::~UIScene_SettingsControlMenu()
{
}
wstring UIScene_SettingsControlMenu::getMoviePath()
{
if(app.GetLocalPlayerCount() > 1)
{
return L"SettingsControlMenuSplit";
}
else
{
return L"SettingsControlMenu";
}
}
void UIScene_SettingsControlMenu::updateTooltips()
{
ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK);
}
void UIScene_SettingsControlMenu::updateComponents()
{
bool bNotInGame=(Minecraft::GetInstance()->level==nullptr);
if(bNotInGame)
{
m_parentLayer->showComponent(m_iPad,eUIComponent_Panorama,true);
m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,true);
}
else
{
m_parentLayer->showComponent(m_iPad,eUIComponent_Panorama,false);
if( app.GetLocalPlayerCount() == 1 ) m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,true);
else m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,false);
}
}
void UIScene_SettingsControlMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
{
ui.AnimateKeyPress(iPad, key, repeat, pressed, released);
switch(key)
{
case ACTION_MENU_CANCEL:
if(pressed)
{
navigateBack();
handled = true;
}
break;
case ACTION_MENU_OK:
#ifdef __ORBIS__
case ACTION_MENU_TOUCHPAD_PRESS:
#endif
sendInputToMovie(key, repeat, pressed, released);
break;
case ACTION_MENU_UP:
case ACTION_MENU_DOWN:
case ACTION_MENU_LEFT:
case ACTION_MENU_RIGHT:
sendInputToMovie(key, repeat, pressed, released);
break;
}
}
void UIScene_SettingsControlMenu::handleSliderMove(F64 sliderId, F64 currentValue)
{
WCHAR TempString[256];
int value = static_cast<int>(currentValue);
switch(static_cast<int>(sliderId))
{
case eControl_SensitivityInGame:
m_sliderSensitivityInGame.handleSliderMove(value);
app.SetGameSettings(m_iPad,eGameSetting_Sensitivity_InGame,value);
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_SENSITIVITY_INGAME ),value);
m_sliderSensitivityInGame.setLabel(TempString);
break;
case eControl_SensitivityInMenu:
m_sliderSensitivityInMenu.handleSliderMove(value);
app.SetGameSettings(m_iPad,eGameSetting_Sensitivity_InMenu,value);
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_SENSITIVITY_INMENU ),value);
m_sliderSensitivityInMenu.setLabel(TempString);
break;
}
}

View file

@ -1,37 +0,0 @@
#pragma once
#include "UIScene.h"
class UIScene_SettingsControlMenu : public UIScene
{
private:
enum EControls
{
eControl_SensitivityInGame,
eControl_SensitivityInMenu
};
UIControl_Slider m_sliderSensitivityInGame, m_sliderSensitivityInMenu; // Sliders
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_sliderSensitivityInGame, "SensitivityInGame")
UI_MAP_ELEMENT( m_sliderSensitivityInMenu, "SensitivityInMenu")
UI_END_MAP_ELEMENTS_AND_NAMES()
public:
UIScene_SettingsControlMenu(int iPad, void *initData, UILayer *parentLayer);
virtual ~UIScene_SettingsControlMenu();
virtual EUIScene getSceneType() { return eUIScene_SettingsControlMenu;}
virtual void updateTooltips();
virtual void updateComponents();
protected:
// TODO: This should be pure virtual in this class
virtual wstring getMoviePath();
public:
// INPUT
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
virtual void handleSliderMove(F64 sliderId, F64 currentValue);
};

View file

@ -70,7 +70,6 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD
m_checkboxVSync.init(L"VSync",eControl_VSync,(app.GetGameSettings(m_iPad,eGameSetting_VSync)!=0));
m_checkboxExclusiveFullscreen.init(L"Fullscreen",eControl_ExclusiveFullscreen,(app.GetGameSettings(m_iPad,eGameSetting_ExclusiveFullscreen)!=0));
WCHAR TempString[256];
swprintf(TempString, 256, L"Render Distance: %d",app.GetGameSettings(m_iPad,eGameSetting_RenderDistance));
@ -83,9 +82,6 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD
const int initialFovDeg = sliderValueToFov(initialFovSlider);
swprintf(TempString, 256, L"FOV: %d", initialFovDeg);
m_sliderFOV.init(TempString, eControl_FOV, 0, FOV_SLIDER_MAX, initialFovSlider);
swprintf( 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));
doHorizontalResizeCheck();
@ -261,14 +257,5 @@ void UIScene_SettingsGraphicsMenu::handleSliderMove(F64 sliderId, F64 currentVal
m_sliderFOV.setLabel(TempString);
}
break;
case eControl_InterfaceOpacity:
m_sliderInterfaceOpacity.handleSliderMove(value);
app.SetGameSettings(m_iPad,eGameSetting_InterfaceOpacity,value);
swprintf( TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_INTERFACEOPACITY ),value);
m_sliderInterfaceOpacity.setLabel(TempString);
break;
}
}

View file

@ -17,11 +17,10 @@ private:
eControl_RenderDistance,
eControl_Gamma,
eControl_FOV,
eControl_InterfaceOpacity
};
UIControl_CheckBox m_checkboxClouds, m_checkboxBedrockFog, m_checkboxCustomSkinAnim, m_checkboxVSync, m_checkboxExclusiveFullscreen; // Checkboxes
UIControl_Slider m_sliderRenderDistance, m_sliderGamma, m_sliderFOV, m_sliderInterfaceOpacity; // Sliders
UIControl_Slider m_sliderRenderDistance, m_sliderGamma, m_sliderFOV; // Sliders
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_checkboxClouds, "Clouds")
UI_MAP_ELEMENT( m_checkboxBedrockFog, "BedrockFog")
@ -31,7 +30,6 @@ private:
UI_MAP_ELEMENT( m_sliderRenderDistance, "RenderDistance")
UI_MAP_ELEMENT( m_sliderGamma, "Gamma")
UI_MAP_ELEMENT(m_sliderFOV, "FOV")
UI_MAP_ELEMENT( m_sliderInterfaceOpacity, "InterfaceOpacity")
UI_END_MAP_ELEMENTS_AND_NAMES()
bool m_bNotInGame;

View file

@ -12,7 +12,6 @@ UIScene_SettingsMenu::UIScene_SettingsMenu(int iPad, void *initData, UILayer *pa
m_buttons[BUTTON_ALL_OPTIONS].init(IDS_OPTIONS,BUTTON_ALL_OPTIONS);
m_buttons[BUTTON_ALL_AUDIO].init(IDS_AUDIO,BUTTON_ALL_AUDIO);
m_buttons[BUTTON_ALL_CONTROL].init(IDS_CONTROL,BUTTON_ALL_CONTROL);
m_buttons[BUTTON_ALL_GRAPHICS].init(IDS_GRAPHICS,BUTTON_ALL_GRAPHICS);
m_buttons[BUTTON_ALL_UI].init(IDS_USER_INTERFACE,BUTTON_ALL_UI);
m_buttons[BUTTON_ALL_RESETTODEFAULTS].init(IDS_RESET_TO_DEFAULTS,BUTTON_ALL_RESETTODEFAULTS);
@ -127,9 +126,6 @@ void UIScene_SettingsMenu::handlePress(F64 controlId, F64 childId)
case BUTTON_ALL_AUDIO:
ui.NavigateToScene(m_iPad, eUIScene_SettingsAudioMenu);
break;
case BUTTON_ALL_CONTROL:
ui.NavigateToScene(m_iPad, eUIScene_SettingsControlMenu);
break;
case BUTTON_ALL_GRAPHICS:
ui.NavigateToScene(m_iPad, eUIScene_SettingsGraphicsMenu);
break;

View file

@ -4,10 +4,9 @@
#define BUTTON_ALL_OPTIONS 0
#define BUTTON_ALL_AUDIO 1
#define BUTTON_ALL_CONTROL 2
#define BUTTON_ALL_GRAPHICS 4
#define BUTTON_ALL_UI 5
#define BUTTON_ALL_RESETTODEFAULTS 6
#define BUTTON_ALL_GRAPHICS 3
#define BUTTON_ALL_UI 4
#define BUTTON_ALL_RESETTODEFAULTS 5
#define BUTTONS_ALL_MAX BUTTON_ALL_RESETTODEFAULTS + 1
class UIScene_SettingsMenu : public UIScene
@ -17,10 +16,9 @@ private:
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_OPTIONS], "Button1")
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_AUDIO], "Button2")
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_CONTROL], "Button3")
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_GRAPHICS], "Button4")
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_UI], "Button5")
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_RESETTODEFAULTS], "Button6")
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_GRAPHICS], "Button3")
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_UI], "Button4")
UI_MAP_ELEMENT( m_buttons[BUTTON_ALL_RESETTODEFAULTS], "Button5")
UI_END_MAP_ELEMENTS_AND_NAMES()
public:
UIScene_SettingsMenu(int iPad, void *initData, UILayer *parentLayer);

View file

@ -24,31 +24,17 @@ int UIScene_SettingsOptionsMenu::m_iDifficultyTitleSettingA[4]=
UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
{
m_bNavigateToLanguageSelector = false;
// m_bNavigateToLanguageSelector = false;
// Setup all the Iggy references we need for this scene
initialiseMovie();
m_bNotInGame=(Minecraft::GetInstance()->level==nullptr);
m_checkboxVerticalSplitscreen.init(app.GetString(IDS_CHECKBOX_VERTICAL_SPLIT_SCREEN),eControl_VerticalSplitscreen,(app.GetGameSettings(m_iPad,eGameSetting_SplitScreenVertical)!=0));
m_checkboxViewBob.init(IDS_VIEW_BOBBING,eControl_ViewBob,(app.GetGameSettings(m_iPad,eGameSetting_ViewBob)!=0));
m_checkboxShowHints.init(IDS_HINTS,eControl_ShowHints,(app.GetGameSettings(m_iPad,eGameSetting_Hints)!=0));
m_checkboxShowTooltips.init(IDS_IN_GAME_TOOLTIPS,eControl_ShowTooltips,(app.GetGameSettings(m_iPad,eGameSetting_Tooltips)!=0));
m_checkboxInGameGamertags.init(IDS_IN_GAME_GAMERTAGS,eControl_InGameGamertags,(app.GetGameSettings(m_iPad,eGameSetting_GamertagsVisible)!=0));
// check if we should display the mash-up option
if(m_bNotInGame && app.GetMashupPackWorlds(m_iPad)!=0xFFFFFFFF)
{
// the mash-up option is needed
m_bMashUpWorldsUnhideOption=true;
m_checkboxMashupWorlds.init(IDS_UNHIDE_MASHUP_WORLDS,eControl_ShowMashUpWorlds,false);
}
else
{
//m_checkboxMashupWorlds.init(L"",eControl_ShowMashUpWorlds,false);
removeControl(&m_checkboxMashupWorlds, true);
m_bMashUpWorldsUnhideOption=false;
}
m_checkboxDeathMessages.init(app.GetString(IDS_CHECKBOX_DEATH_MESSAGES),eControl_DeathMessages,(app.GetGameSettings(m_iPad,eGameSetting_DeathMessages)!=0));
unsigned char ucValue=app.GetGameSettings(m_iPad,eGameSetting_Autosave);
@ -64,10 +50,14 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
swprintf( autosaveLabels[i], 256, L"%ls: %d %ls", app.GetString( IDS_SLIDER_AUTOSAVE ),i*15, app.GetString( IDS_MINUTES ));
}
}
}
m_sliderAutosave.setAllPossibleLabels(9,autosaveLabels);
m_sliderAutosave.init(autosaveLabels[ucValue],eControl_Autosave,0,8,ucValue);
WCHAR TempString[256];
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_SENSITIVITY_INGAME ),app.GetGameSettings(m_iPad,eGameSetting_Sensitivity_InGame));
m_sliderSensitivity_InGame.init(TempString,eControl_Sensitivity_InGame,0,200,app.GetGameSettings(m_iPad,eGameSetting_Sensitivity_InGame));
#if defined(_XBOX_ONE) || defined(__ORBIS__)
removeControl(&m_sliderAutosave,true);
#endif
@ -97,7 +87,7 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
// only the primary player gets to change the autosave and difficulty settings
bool bRemoveDifficulty=false;
bool bRemoveAutosave=false;
bool bRemoveInGameGamertags=false;
// bool bRemoveInGameGamertags=false;
bool bNotInGame=(Minecraft::GetInstance()->level==nullptr);
bool bPrimaryPlayer = ProfileManager.GetPrimaryPad()==m_iPad;
@ -105,7 +95,7 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
{
bRemoveDifficulty=true;
bRemoveAutosave=true;
bRemoveInGameGamertags=true;
// bRemoveInGameGamertags=true;
}
if(!bNotInGame) // in the game
@ -114,7 +104,7 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
if(!g_NetworkManager.IsHost())
{
bRemoveAutosave=true;
bRemoveInGameGamertags=true;
// bRemoveInGameGamertags=true;
}
}
if(bRemoveDifficulty)
@ -128,10 +118,10 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
removeControl(&m_sliderAutosave, true);
}
if(bRemoveInGameGamertags)
{
removeControl(&m_checkboxInGameGamertags, true);
}
// if(bRemoveInGameGamertags)
// {
// removeControl(&m_checkboxInGameGamertags, true);
// }
// 4J-JEV: Changing languages in-game will produce many a bug.
// MGH - disabled the language select for the patch build, we'll re-enable afterwards
@ -151,6 +141,19 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
doHorizontalResizeCheck();
bool bInGame=(Minecraft::GetInstance()->level!=nullptr);
// if we're not in the game, we need to use basescene 0
if(bInGame)
{
// If the game has started, then you need to be the host to change the in-game gamertags
if(!bPrimaryPlayer)
{
// hide things we don't want the splitscreen player changing
removeControl(&m_checkboxVerticalSplitscreen, true);
}
}
if(app.GetLocalPlayerCount()>1)
{
#if TO_BE_IMPLEMENTED
@ -169,12 +172,13 @@ void UIScene_SettingsOptionsMenu::tick()
{
UIScene::tick();
if (m_bNavigateToLanguageSelector)
{
m_bNavigateToLanguageSelector = false;
setGameSettings();
ui.NavigateToScene(m_iPad, eUIScene_LanguageSelector);
}
// if (m_bNavigateToLanguageSelector)
// {
// m_bNavigateToLanguageSelector = false;
// setGameSettings();
// ui.NavigateToScene(m_iPad, eUIScene_LanguageSelector);
// }
}
wstring UIScene_SettingsOptionsMenu::getMoviePath()
@ -245,33 +249,19 @@ void UIScene_SettingsOptionsMenu::handlePress(F64 controlId, F64 childId)
switch(static_cast<int>(controlId))
{
case eControl_Languages:
m_bNavigateToLanguageSelector = true;
break;
// case eControl_Languages:
// m_bNavigateToLanguageSelector = true;
// break;
}
}
void UIScene_SettingsOptionsMenu::handleReload()
{
m_bNavigateToLanguageSelector = false;
// m_bNavigateToLanguageSelector = false;
m_checkboxViewBob.init(IDS_VIEW_BOBBING,eControl_ViewBob,(app.GetGameSettings(m_iPad,eGameSetting_ViewBob)!=0));
m_checkboxShowHints.init(IDS_HINTS,eControl_ShowHints,(app.GetGameSettings(m_iPad,eGameSetting_Hints)!=0));
m_checkboxShowTooltips.init(IDS_IN_GAME_TOOLTIPS,eControl_ShowTooltips,(app.GetGameSettings(m_iPad,eGameSetting_Tooltips)!=0));
m_checkboxInGameGamertags.init(IDS_IN_GAME_GAMERTAGS,eControl_InGameGamertags,(app.GetGameSettings(m_iPad,eGameSetting_GamertagsVisible)!=0));
// check if we should display the mash-up option
if(m_bNotInGame && app.GetMashupPackWorlds(m_iPad)!=0xFFFFFFFF)
{
// the mash-up option is needed
m_bMashUpWorldsUnhideOption=true;
}
else
{
//m_checkboxMashupWorlds.init(L"",eControl_ShowMashUpWorlds,false);
removeControl(&m_checkboxMashupWorlds, true);
m_bMashUpWorldsUnhideOption=false;
}
m_checkboxDeathMessages.init(IDS_CHECKBOX_DEATH_MESSAGES,eControl_DeathMessages,(app.GetGameSettings(m_iPad,eGameSetting_DeathMessages)!=0));
unsigned char ucValue=app.GetGameSettings(m_iPad,eGameSetting_Autosave);
@ -322,7 +312,7 @@ void UIScene_SettingsOptionsMenu::handleReload()
// only the primary player gets to change the autosave and difficulty settings
bool bRemoveDifficulty=false;
bool bRemoveAutosave=false;
bool bRemoveInGameGamertags=false;
// bool bRemoveInGameGamertags=false;
bool bNotInGame=(Minecraft::GetInstance()->level==nullptr);
bool bPrimaryPlayer = ProfileManager.GetPrimaryPad()==m_iPad;
@ -330,7 +320,7 @@ void UIScene_SettingsOptionsMenu::handleReload()
{
bRemoveDifficulty=true;
bRemoveAutosave=true;
bRemoveInGameGamertags=true;
// bRemoveInGameGamertags=true;
}
if(!bNotInGame) // in the game
@ -339,7 +329,7 @@ void UIScene_SettingsOptionsMenu::handleReload()
if(!g_NetworkManager.IsHost())
{
bRemoveAutosave=true;
bRemoveInGameGamertags=true;
// bRemoveInGameGamertags=true;
}
}
if(bRemoveDifficulty)
@ -353,11 +343,6 @@ void UIScene_SettingsOptionsMenu::handleReload()
removeControl(&m_sliderAutosave, true);
}
if(bRemoveInGameGamertags)
{
removeControl(&m_checkboxInGameGamertags, true);
}
// MGH - disabled the language select for the patch build, we'll re-enable afterwards
// 4J Stu - Removed it with a preprocessor def as we turn this off in various places
#ifdef _ENABLE_LANGUAGE_SELECT
@ -379,6 +364,7 @@ void UIScene_SettingsOptionsMenu::handleReload()
void UIScene_SettingsOptionsMenu::handleSliderMove(F64 sliderId, F64 currentValue)
{
int value = static_cast<int>(currentValue);
WCHAR TempString[256];
switch(static_cast<int>(sliderId))
{
case eControl_Autosave:
@ -388,6 +374,14 @@ void UIScene_SettingsOptionsMenu::handleSliderMove(F64 sliderId, F64 currentValu
// Update the autosave timer
app.SetAutosaveTimerTime();
break;
case eControl_Sensitivity_InGame:
m_sliderSensitivity_InGame.handleSliderMove(value);
app.SetGameSettings(m_iPad,eGameSetting_Sensitivity_InGame,value);
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_SENSITIVITY_INGAME ),value);
m_sliderSensitivity_InGame.setLabel(TempString);
break;
case eControl_Difficulty:
m_sliderDifficulty.handleSliderMove(value);
@ -412,16 +406,30 @@ void UIScene_SettingsOptionsMenu::setGameSettings()
{
// check the checkboxes
app.SetGameSettings(m_iPad,eGameSetting_ViewBob,m_checkboxViewBob.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_GamertagsVisible,m_checkboxInGameGamertags.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_Hints,m_checkboxShowHints.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_Tooltips,m_checkboxShowTooltips.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_DeathMessages,m_checkboxDeathMessages.IsChecked()?1:0);
// the mashup option will only be shown if some worlds have been previously hidden
if(m_bMashUpWorldsUnhideOption && m_checkboxMashupWorlds.IsChecked())
if(app.GetGameSettings(m_iPad,eGameSetting_SplitScreenVertical)!=(m_checkboxVerticalSplitscreen.IsChecked()?1:0))
{
// unhide all worlds
app.EnableMashupPackWorlds(m_iPad);
// changed
app.SetGameSettings(m_iPad,eGameSetting_SplitScreenVertical,m_checkboxVerticalSplitscreen.IsChecked()?1:0);
// close the xui scenes, so we don't have the navigate backed to menu at the wrong place
if(app.GetLocalPlayerCount()==2)
{
ui.CloseAllPlayersScenes();
}
else
{
navigateBack();
}
}
else
{
navigateBack();
}
// handled = true;
// if the splitscreen vertical/horizontal has changed, need to update the scenes
// 4J-PB - don't action changes here or we might write to the profile on backing out here and then get a change in the settings all, and write again on backing out there
//app.CheckGameSettingsChanged(true,pInputData->UserIndex);

View file

@ -7,13 +7,12 @@ class UIScene_SettingsOptionsMenu : public UIScene
private:
enum EControls
{
eControl_VerticalSplitscreen,
eControl_ViewBob,
eControl_ShowHints,
eControl_ShowTooltips,
eControl_InGameGamertags,
eControl_ShowMashUpWorlds,
eControl_DeathMessages,
eControl_Autosave,
eControl_Languages,
eControl_Sensitivity_InGame,
eControl_Difficulty
};
protected:
@ -21,26 +20,27 @@ protected:
static int m_iDifficultyTitleSettingA[4];
private:
UIControl_CheckBox m_checkboxViewBob, m_checkboxShowHints, m_checkboxShowTooltips, m_checkboxInGameGamertags, m_checkboxMashupWorlds; // Checkboxes
UIControl_Slider m_sliderAutosave, m_sliderDifficulty; // Sliders
UIControl_CheckBox m_checkboxDeathMessages, m_checkboxViewBob, m_checkboxShowHints, m_checkboxVerticalSplitscreen; // Checkboxes
UIControl_Slider m_sliderAutosave, m_sliderDifficulty, m_sliderSensitivity_InGame; // Sliders
UIControl_Label m_labelDifficultyText; //Text
UIControl_Button m_buttonLanguageSelect;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_checkboxVerticalSplitscreen, "VerticalSplitscreen")
UI_MAP_ELEMENT( m_checkboxViewBob, "ViewBob")
UI_MAP_ELEMENT( m_checkboxShowHints, "ShowHints")
UI_MAP_ELEMENT( m_checkboxShowTooltips, "ShowTooltips")
UI_MAP_ELEMENT( m_checkboxInGameGamertags, "InGameGamertags")
UI_MAP_ELEMENT( m_checkboxMashupWorlds, "ShowMashUpWorlds")
UI_MAP_ELEMENT( m_checkboxDeathMessages, "DeathMessages")
// UI_MAP_ELEMENT( m_checkboxMashupWorlds, "ShowMashUpWorlds")
UI_MAP_ELEMENT( m_sliderAutosave, "Autosave")
UI_MAP_ELEMENT( m_sliderDifficulty, "Difficulty")
UI_MAP_ELEMENT( m_sliderSensitivity_InGame, "Sensitivity_InGame")
UI_MAP_ELEMENT( m_labelDifficultyText, "DifficultyText")
UI_MAP_ELEMENT( m_buttonLanguageSelect, "Languages")
// UI_MAP_ELEMENT( m_buttonLanguageSelect, "Languages")
UI_END_MAP_ELEMENTS_AND_NAMES()
bool m_bNotInGame;
bool m_bMashUpWorldsUnhideOption;
bool m_bNavigateToLanguageSelector;
// bool m_bMashUpWorldsUnhideOption;
// bool m_bNavigateToLanguageSelector;
public:
UIScene_SettingsOptionsMenu(int iPad, void *initData, UILayer *parentLayer);

View file

@ -11,17 +11,24 @@ UIScene_SettingsUIMenu::UIScene_SettingsUIMenu(int iPad, void *initData, UILayer
m_checkboxDisplayHUD.init(app.GetString(IDS_CHECKBOX_DISPLAY_HUD),eControl_DisplayHUD,(app.GetGameSettings(m_iPad,eGameSetting_DisplayHUD)!=0));
m_checkboxDisplayHand.init(app.GetString(IDS_CHECKBOX_DISPLAY_HAND),eControl_DisplayHand,(app.GetGameSettings(m_iPad,eGameSetting_DisplayHand)!=0));
m_checkboxDisplayDeathMessages.init(app.GetString(IDS_CHECKBOX_DEATH_MESSAGES),eControl_DisplayDeathMessages,(app.GetGameSettings(m_iPad,eGameSetting_DeathMessages)!=0));
m_checkboxShowTooltips.init(IDS_IN_GAME_TOOLTIPS,eControl_ShowTooltips,(app.GetGameSettings(m_iPad,eGameSetting_Tooltips)!=0));
m_checkboxDisplayAnimatedCharacter.init(app.GetString(IDS_CHECKBOX_ANIMATED_CHARACTER),eControl_DisplayAnimatedCharacter,(app.GetGameSettings(m_iPad,eGameSetting_AnimatedCharacter)!=0));
m_checkboxSplitscreen.init(app.GetString(IDS_CHECKBOX_VERTICAL_SPLIT_SCREEN),eControl_Splitscreen,(app.GetGameSettings(m_iPad,eGameSetting_SplitScreenVertical)!=0));
m_checkboxInGameGamertags.init(IDS_IN_GAME_GAMERTAGS,eControl_InGameGamertags,(app.GetGameSettings(m_iPad,eGameSetting_GamertagsVisible)!=0));
m_checkboxShowSplitscreenGamertags.init(app.GetString(IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS),eControl_ShowSplitscreenGamertags,(app.GetGameSettings(m_iPad,eGameSetting_DisplaySplitscreenGamertags)!=0));
m_checkboxShowClassicCrafting.init(app.GetString(IDS_CHECKBOX_CLASSICCRAFTING), eControl_ShowClassicCrafting, (app.GetGameSettings(m_iPad, eGameSetting_ClassicCrafting) != 0));
WCHAR TempString[256];
swprintf( 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));
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_SENSITIVITY_INMENU ),app.GetGameSettings(m_iPad,eGameSetting_Sensitivity_InMenu));
m_sliderSensitivityInMenu.init(TempString,eControl_SensitivityInMenu,0,200,app.GetGameSettings(m_iPad,eGameSetting_Sensitivity_InMenu));
swprintf( (WCHAR *)TempString, 256, L"%ls: %d", app.GetString( IDS_SLIDER_UISIZE ),app.GetGameSettings(m_iPad,eGameSetting_UISize)+1);
m_sliderUISize.init(TempString,eControl_UISize,1,3,app.GetGameSettings(m_iPad,eGameSetting_UISize)+1);
swprintf( (WCHAR *)TempString, 256, L"%ls: %d", app.GetString( IDS_SLIDER_UISIZESPLITSCREEN ),app.GetGameSettings(m_iPad,eGameSetting_UISizeSplitscreen)+1);
m_sliderUISizeSplitscreen.init(TempString,eControl_UISizeSplitscreen,1,3,app.GetGameSettings(m_iPad,eGameSetting_UISizeSplitscreen)+1);
@ -29,6 +36,12 @@ UIScene_SettingsUIMenu::UIScene_SettingsUIMenu(int iPad, void *initData, UILayer
bool bInGame=(Minecraft::GetInstance()->level!=nullptr);
bool bPrimaryPlayer = ProfileManager.GetPrimaryPad()==m_iPad;
bool bRemoveInGameGamertags=false;
if(!bPrimaryPlayer)
{
bRemoveInGameGamertags=true;
}
// if we're not in the game, we need to use basescene 0
if(bInGame)
@ -37,11 +50,14 @@ UIScene_SettingsUIMenu::UIScene_SettingsUIMenu(int iPad, void *initData, UILayer
if(!bPrimaryPlayer)
{
// hide things we don't want the splitscreen player changing
removeControl(&m_checkboxSplitscreen, true);
removeControl(&m_checkboxShowSplitscreenGamertags, true);
}
}
if(bRemoveInGameGamertags)
{
removeControl(&m_checkboxInGameGamertags, true);
}
if(app.GetLocalPlayerCount()>1)
{
@ -102,33 +118,13 @@ void UIScene_SettingsUIMenu::handleInput(int iPad, int key, bool repeat, bool pr
// check the checkboxes
app.SetGameSettings(m_iPad,eGameSetting_DisplayHUD,m_checkboxDisplayHUD.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_DisplayHand,m_checkboxDisplayHand.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_DisplaySplitscreenGamertags,m_checkboxShowSplitscreenGamertags.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_DeathMessages,m_checkboxDisplayDeathMessages.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_Tooltips,m_checkboxShowTooltips.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_AnimatedCharacter,m_checkboxDisplayAnimatedCharacter.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_GamertagsVisible,m_checkboxInGameGamertags.IsChecked()?1:0);
app.SetGameSettings(m_iPad,eGameSetting_DisplaySplitscreenGamertags,m_checkboxShowSplitscreenGamertags.IsChecked()?1:0);
app.SetGameSettings(m_iPad, eGameSetting_ClassicCrafting, m_checkboxShowClassicCrafting.IsChecked() ? 1 : 0);
// if the splitscreen vertical/horizontal has changed, need to update the scenes
if(app.GetGameSettings(m_iPad,eGameSetting_SplitScreenVertical)!=(m_checkboxSplitscreen.IsChecked()?1:0))
{
// changed
app.SetGameSettings(m_iPad,eGameSetting_SplitScreenVertical,m_checkboxSplitscreen.IsChecked()?1:0);
// close the xui scenes, so we don't have the navigate backed to menu at the wrong place
if(app.GetLocalPlayerCount()==2)
{
ui.CloseAllPlayersScenes();
}
else
{
navigateBack();
}
}
else
{
navigateBack();
}
handled = true;
navigateBack();
}
break;
case ACTION_MENU_OK:
@ -152,6 +148,22 @@ void UIScene_SettingsUIMenu::handleSliderMove(F64 sliderId, F64 currentValue)
int value = static_cast<int>(currentValue);
switch(static_cast<int>(sliderId))
{
case eControl_InterfaceOpacity:
m_sliderInterfaceOpacity.handleSliderMove(value);
app.SetGameSettings(m_iPad,eGameSetting_InterfaceOpacity,value);
swprintf( TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_INTERFACEOPACITY ),value);
m_sliderInterfaceOpacity.setLabel(TempString);
break;
case eControl_SensitivityInMenu:
m_sliderSensitivityInMenu.handleSliderMove(value);
app.SetGameSettings(m_iPad,eGameSetting_Sensitivity_InMenu,value);
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_SENSITIVITY_INMENU ),value);
m_sliderSensitivityInMenu.setLabel(TempString);
break;
case eControl_UISize:
m_sliderUISize.handleSliderMove(value);

View file

@ -9,23 +9,29 @@ private:
{
eControl_DisplayHUD,
eControl_DisplayHand,
eControl_DisplayDeathMessages,
eControl_SensitivityInMenu,
eControl_InterfaceOpacity,
eControl_ShowTooltips,
eControl_DisplayAnimatedCharacter,
eControl_Splitscreen,
eControl_InGameGamertags,
eControl_ShowSplitscreenGamertags,
eControl_ShowClassicCrafting,
eControl_UISize,
eControl_UISizeSplitscreen
};
UIControl_CheckBox m_checkboxDisplayHUD, m_checkboxDisplayHand, m_checkboxDisplayDeathMessages, m_checkboxDisplayAnimatedCharacter, m_checkboxSplitscreen, m_checkboxShowSplitscreenGamertags, m_checkboxShowClassicCrafting; // Checkboxes
UIControl_Slider m_sliderUISize, m_sliderUISizeSplitscreen; // Sliders
UIControl_CheckBox m_checkboxDisplayHUD, m_checkboxDisplayHand, m_checkboxDisplayAnimatedCharacter, m_checkboxShowSplitscreenGamertags, m_checkboxShowClassicCrafting, m_checkboxShowTooltips, m_checkboxInGameGamertags; // Checkboxes
UIControl_Slider m_sliderInterfaceOpacity, m_sliderSensitivityInMenu, m_sliderUISize, m_sliderUISizeSplitscreen; // Sliders
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_checkboxDisplayHUD, "DisplayHUD")
UI_MAP_ELEMENT( m_checkboxDisplayHand, "DisplayHand")
UI_MAP_ELEMENT( m_checkboxDisplayDeathMessages, "DisplayDeathMessages")
UI_MAP_ELEMENT( m_sliderInterfaceOpacity, "InterfaceOpacity")
UI_MAP_ELEMENT( m_checkboxShowTooltips, "ShowTooltips")
UI_MAP_ELEMENT( m_checkboxDisplayAnimatedCharacter, "DisplayAnimatedCharacter")
UI_MAP_ELEMENT( m_checkboxSplitscreen, "Splitscreen")
UI_MAP_ELEMENT( m_sliderSensitivityInMenu, "SensitivityInMenu")
UI_MAP_ELEMENT( m_checkboxInGameGamertags, "InGameGamertags")
UI_MAP_ELEMENT( m_checkboxShowSplitscreenGamertags, "ShowSplitscreenGamertags")
UI_MAP_ELEMENT(m_checkboxShowClassicCrafting, "ShowClassicCrafting")

View file

@ -7526,7 +7526,7 @@ Would you like to install the mash-up pack or texture pack now?</value>
</data>
<data name="IDS_CHECKBOX_VERTICAL_SPLIT_SCREEN">
<value>2 Player Split-screen Vertical</value>
<value>Vertical Splitscreen</value>
</data>
<data name="IDS_DONE">

View file

@ -201,8 +201,6 @@ set(_MINECRAFT_CLIENT_WINDOWS_COMMON_UI_SCENES_HELP__OPTIONS
"${CMAKE_CURRENT_SOURCE_DIR}/Common/UI/UIScene_ReinstallMenu.h"
"${CMAKE_CURRENT_SOURCE_DIR}/Common/UI/UIScene_SettingsAudioMenu.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Common/UI/UIScene_SettingsAudioMenu.h"
"${CMAKE_CURRENT_SOURCE_DIR}/Common/UI/UIScene_SettingsControlMenu.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Common/UI/UIScene_SettingsControlMenu.h"
"${CMAKE_CURRENT_SOURCE_DIR}/Common/UI/UIScene_SettingsGraphicsMenu.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Common/UI/UIScene_SettingsGraphicsMenu.h"
"${CMAKE_CURRENT_SOURCE_DIR}/Common/UI/UIScene_SettingsMenu.cpp"

View file

@ -236,7 +236,6 @@ set(_MINECRAFT_SERVER_COMMON_ROOT
"${_MS_SRC}/../Minecraft.Client/Common/UI/UIScene_ReinstallMenu.cpp"
"${_MS_SRC}/../Minecraft.Client/Common/UI/UIScene_SaveMessage.cpp"
"${_MS_SRC}/../Minecraft.Client/Common/UI/UIScene_SettingsAudioMenu.cpp"
"${_MS_SRC}/../Minecraft.Client/Common/UI/UIScene_SettingsControlMenu.cpp"
"${_MS_SRC}/../Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp"
"${_MS_SRC}/../Minecraft.Client/Common/UI/UIScene_SettingsMenu.cpp"
"${_MS_SRC}/../Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.cpp"