mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 11:35:35 +08:00
Merge pull request #26041 from bdach/fix-relax-sliders
Fix relax mod not considering full follow area radius when automatically holding sliders
This commit is contained in:
commit
85c2484ac0
@ -88,7 +88,7 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
if (!slider.HeadCircle.IsHit)
|
if (!slider.HeadCircle.IsHit)
|
||||||
handleHitCircle(slider.HeadCircle);
|
handleHitCircle(slider.HeadCircle);
|
||||||
|
|
||||||
requiresHold |= slider.Ball.IsHovered || h.IsHovered;
|
requiresHold |= slider.SliderInputManager.IsMouseInFollowArea(true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DrawableSpinner spinner:
|
case DrawableSpinner spinner:
|
||||||
|
@ -65,7 +65,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
protected override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
base.Update();
|
base.Update();
|
||||||
updateTracking(isMouseInFollowArea(Tracking));
|
updateTracking(IsMouseInFollowArea(Tracking));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostProcessHeadJudgement(DrawableSliderHead head)
|
public void PostProcessHeadJudgement(DrawableSliderHead head)
|
||||||
@ -73,7 +73,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
if (!head.Judged || !head.Result.IsHit)
|
if (!head.Judged || !head.Result.IsHit)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!isMouseInFollowArea(true))
|
if (!IsMouseInFollowArea(true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Debug.Assert(screenSpaceMousePosition != null);
|
Debug.Assert(screenSpaceMousePosition != null);
|
||||||
@ -129,7 +129,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
// If all ticks were hit so far, enable tracking the full extent.
|
// If all ticks were hit so far, enable tracking the full extent.
|
||||||
// If any ticks were missed, assume tracking would've broken at some point, and should only activate if the cursor is within the slider ball.
|
// If any ticks were missed, assume tracking would've broken at some point, and should only activate if the cursor is within the slider ball.
|
||||||
// For the second case, this may be the last chance we have to enable tracking before other objects get judged, otherwise the same would normally happen via Update().
|
// For the second case, this may be the last chance we have to enable tracking before other objects get judged, otherwise the same would normally happen via Update().
|
||||||
updateTracking(allTicksInRange || isMouseInFollowArea(false));
|
updateTracking(allTicksInRange || IsMouseInFollowArea(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TryJudgeNestedObject(DrawableOsuHitObject nestedObject, double timeOffset)
|
public void TryJudgeNestedObject(DrawableOsuHitObject nestedObject, double timeOffset)
|
||||||
@ -174,7 +174,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
/// Whether the mouse is currently in the follow area.
|
/// Whether the mouse is currently in the follow area.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="expanded">Whether to test against the maximum area of the follow circle.</param>
|
/// <param name="expanded">Whether to test against the maximum area of the follow circle.</param>
|
||||||
private bool isMouseInFollowArea(bool expanded)
|
public bool IsMouseInFollowArea(bool expanded)
|
||||||
{
|
{
|
||||||
if (screenSpaceMousePosition is not Vector2 pos)
|
if (screenSpaceMousePosition is not Vector2 pos)
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user