diff --git a/Minecraft.Client/Common/UI/UIController.cpp b/Minecraft.Client/Common/UI/UIController.cpp index 03931c18..1eb09ef0 100644 --- a/Minecraft.Client/Common/UI/UIController.cpp +++ b/Minecraft.Client/Common/UI/UIController.cpp @@ -1104,8 +1104,11 @@ void UIController::tickInput() if (sceneMouseX >= cx && sceneMouseX <= cx + cw && sceneMouseY >= cy && sceneMouseY <= cy + ch) { - m_mouseDraggingSliderScene = pScene->getSceneType(); - m_mouseDraggingSliderId = pSlider->getId(); + if (pScene->canMoveSlider(pSlider->getId())) + { + m_mouseDraggingSliderScene = pScene->getSceneType(); + m_mouseDraggingSliderId = pSlider->getId(); + } break; } } @@ -1115,7 +1118,7 @@ void UIController::tickInput() if (leftDown && m_mouseDraggingSliderScene == pScene->getSceneType() && m_mouseDraggingSliderId >= 0) { UIControl_Slider *pSlider = FindSliderById(pScene, m_mouseDraggingSliderId); - if (pSlider && pSlider->getVisible()) + if (pSlider && pSlider->getVisible() && pScene->canMoveSlider(m_mouseDraggingSliderId)) { pSlider->UpdateControl(); S32 sliderX = pSlider->getXPos() + panelOffsetX; diff --git a/Minecraft.Client/Common/UI/UIScene.h b/Minecraft.Client/Common/UI/UIScene.h index 84514ff5..e232e48d 100644 --- a/Minecraft.Client/Common/UI/UIScene.h +++ b/Minecraft.Client/Common/UI/UIScene.h @@ -253,6 +253,8 @@ protected: virtual void handleCheckboxToggled(F64 controlId, bool selected) {} virtual void handleSliderMove(F64 sliderId, F64 currentValue) {} virtual void handleAnimationEnd() {} +public: + virtual bool canMoveSlider(F64 sliderId) { return true; } virtual void handleSelectionChanged(F64 selectedId) {} virtual void handleRequestMoreData(F64 startIndex, bool up) {} virtual void handleTouchBoxRebuild() {} diff --git a/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp b/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp index 70edcfa7..860e4b00 100644 --- a/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp @@ -722,6 +722,16 @@ void UIScene_CreateWorldMenu::handleSliderMove(F64 sliderId, F64 currentValue) } } +bool UIScene_CreateWorldMenu::canMoveSlider(F64 sliderId) +{ + // Prevent gamemode slider movement when hardcore is enabled + if (sliderId == eControl_GameModeToggle && s_bHardcore) + return false; + + return true; +} + + void UIScene_CreateWorldMenu::handleTimerComplete(int id) { #ifdef __PSVITA__ diff --git a/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h b/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h index 4b73ae98..dc826cc7 100644 --- a/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h +++ b/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h @@ -74,6 +74,7 @@ protected: virtual void handleTimerComplete(int id); virtual void handleGainFocus(bool navBack); + virtual bool canMoveSlider(F64 sliderId); public: // INPUT diff --git a/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp index 35682e2c..b76ec04e 100644 --- a/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp @@ -1040,6 +1040,14 @@ void UIScene_LoadMenu::handleSliderMove(F64 sliderId, F64 currentValue) } } +bool UIScene_LoadMenu::canMoveSlider(F64 sliderId) +{ + if (sliderId == eControl_GameMode && m_bHardcore) + return false; + + return true; +} + void UIScene_LoadMenu::handleTouchBoxRebuild() { m_bRebuildTouchBoxes = true; diff --git a/Minecraft.Client/Common/UI/UIScene_LoadMenu.h b/Minecraft.Client/Common/UI/UIScene_LoadMenu.h index 922cb154..5d2fdb8a 100644 --- a/Minecraft.Client/Common/UI/UIScene_LoadMenu.h +++ b/Minecraft.Client/Common/UI/UIScene_LoadMenu.h @@ -100,6 +100,7 @@ protected: void handlePress(F64 controlId, F64 childId); void handleSliderMove(F64 sliderId, F64 currentValue); virtual void handleGainFocus(bool navBack); + virtual bool canMoveSlider(F64 sliderId); private: void StartSharedLaunchFlow();