1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-13 20:33:35 +08:00

Fix incorrect translation of note freezing logic

This commit is contained in:
Bartłomiej Dach
2025-05-20 08:57:16 +02:00
Unverified
parent 59490054db
commit bd703b60f9
2 changed files with 12 additions and 1 deletions
@@ -27,6 +27,17 @@ namespace osu.Game.Rulesets.Mania.Judgements
public bool IsHolding(double currentTime) => getLastReport(currentTime).holding;
public bool DroppedHoldAfter(double time)
{
foreach (var state in holdingState)
{
if (state.time >= time && !state.holding)
return true;
}
return false;
}
public void ReportHoldState(double currentTime, bool holding)
{
var lastReport = getLastReport(currentTime);
@@ -235,7 +235,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
//
// As per stable, this should not apply for early hits, waiting until the object starts to touch the
// judgement area first.
if (Head.IsHit && isHolding.Value && DrawHeight > 0)
if (Head.IsHit && !Result.DroppedHoldAfter(HitObject.StartTime) && DrawHeight > 0)
{
// How far past the hit target this hold note is.
float yOffset = Direction.Value == ScrollingDirection.Up ? -Y : Y;