1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 18:12:56 +08:00

Store time of hold note break

This commit is contained in:
Bartłomiej Dach 2020-11-13 21:14:34 +01:00
parent 4777b1be81
commit b62bf5798d
2 changed files with 5 additions and 5 deletions

View File

@ -51,9 +51,9 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
public double? HoldStartTime { get; private set; } public double? HoldStartTime { get; private set; }
/// <summary> /// <summary>
/// Whether the hold note has been released too early and shouldn't give full score for the release. /// Time at which the hold note has been broken, i.e. released too early, resulting in a reduced score.
/// </summary> /// </summary>
public bool HasBroken { get; private set; } public double? HoldBrokenTime { get; private set; }
/// <summary> /// <summary>
/// Whether the hold note has been released potentially without having caused a break. /// Whether the hold note has been released potentially without having caused a break.
@ -238,7 +238,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
} }
if (Tail.Judged && !Tail.IsHit) if (Tail.Judged && !Tail.IsHit)
HasBroken = true; HoldBrokenTime = Time.Current;
} }
public bool OnPressed(ManiaAction action) public bool OnPressed(ManiaAction action)
@ -298,7 +298,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
// If the key has been released too early, the user should not receive full score for the release // If the key has been released too early, the user should not receive full score for the release
if (!Tail.IsHit) if (!Tail.IsHit)
HasBroken = true; HoldBrokenTime = Time.Current;
releaseTime = Time.Current; releaseTime = Time.Current;
} }

View File

@ -52,7 +52,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
ApplyResult(r => ApplyResult(r =>
{ {
// If the head wasn't hit or the hold note was broken, cap the max score to Meh. // If the head wasn't hit or the hold note was broken, cap the max score to Meh.
if (result > HitResult.Meh && (!holdNote.Head.IsHit || holdNote.HasBroken)) if (result > HitResult.Meh && (!holdNote.Head.IsHit || holdNote.HoldBrokenTime != null))
result = HitResult.Meh; result = HitResult.Meh;
r.Type = result; r.Type = result;