mirror of
https://github.com/ppy/osu.git
synced 2025-01-15 08:12:56 +08:00
Fix 2B maps not playing correctly with relax mod enabled
This commit is contained in:
parent
9ea6912520
commit
cd2d1b0669
@ -43,15 +43,15 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
|
|
||||||
switch (h)
|
switch (h)
|
||||||
{
|
{
|
||||||
case DrawableHitCircle _:
|
case DrawableHitCircle circle:
|
||||||
if (!h.IsHovered)
|
handleHitCircle(circle);
|
||||||
break;
|
|
||||||
|
|
||||||
Debug.Assert(h.HitObject.HitWindows != null);
|
|
||||||
requiresHit |= h.HitObject.HitWindows.CanBeHit(time - h.HitObject.StartTime);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DrawableSlider slider:
|
case DrawableSlider slider:
|
||||||
|
// Handles cases like "2B" beatmaps, where sliders may be overlapping and simply holding is not enough.
|
||||||
|
if (!slider.HeadCircle.IsHit)
|
||||||
|
handleHitCircle(slider.HeadCircle);
|
||||||
|
|
||||||
requiresHold |= slider.Ball.IsHovered || h.IsHovered;
|
requiresHold |= slider.Ball.IsHovered || h.IsHovered;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -68,6 +68,15 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
}
|
}
|
||||||
|
|
||||||
addAction(requiresHold);
|
addAction(requiresHold);
|
||||||
|
|
||||||
|
void handleHitCircle(DrawableHitCircle circle)
|
||||||
|
{
|
||||||
|
if (!circle.IsHovered)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Debug.Assert(circle.HitObject.HitWindows != null);
|
||||||
|
requiresHit |= circle.HitObject.HitWindows.CanBeHit(time - circle.HitObject.StartTime);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool wasHit;
|
private bool wasHit;
|
||||||
|
Loading…
Reference in New Issue
Block a user