mirror of
https://github.com/neoStudiosLCE/neoLegacy.git
synced 2026-06-21 12:52:55 +00:00
fix: Prevent gamemode slider movement when hardcore mode is enabled
Add virtual `canMoveSlider` method to UIScene base class and override it in both LoadMenu and CreateWorldMenu scenes. The method returns false when attempting to move the gamemode slider while hardcore mode is active, effectively locking the slider in that state. The UIController now checks `canMoveSlider` before initiating a slider drag and during ongoing drag updates.
This commit is contained in:
parent
4b147be21d
commit
6d98c4ebf6
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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() {}
|
||||
|
|
|
|||
|
|
@ -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__
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ protected:
|
|||
|
||||
virtual void handleTimerComplete(int id);
|
||||
virtual void handleGainFocus(bool navBack);
|
||||
virtual bool canMoveSlider(F64 sliderId);
|
||||
|
||||
public:
|
||||
// INPUT
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue