1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-14 03:25:11 +08:00

Fix 2B maps not playing correctly with relax mod enabled

This commit is contained in:
Dean Herbert 2020-02-14 17:00:55 +09:00
parent 9ea6912520
commit cd2d1b0669

View File

@ -43,15 +43,15 @@ namespace osu.Game.Rulesets.Osu.Mods
switch (h)
{
case DrawableHitCircle _:
if (!h.IsHovered)
break;
Debug.Assert(h.HitObject.HitWindows != null);
requiresHit |= h.HitObject.HitWindows.CanBeHit(time - h.HitObject.StartTime);
case DrawableHitCircle circle:
handleHitCircle(circle);
break;
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;
break;
@ -68,6 +68,15 @@ namespace osu.Game.Rulesets.Osu.Mods
}
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;