diff --git a/osu.Game.Rulesets.Taiko/Objects/TaikoHitWindows.cs b/osu.Game.Rulesets.Taiko/Objects/TaikoHitWindows.cs index 2c207114da..9199e6f141 100644 --- a/osu.Game.Rulesets.Taiko/Objects/TaikoHitWindows.cs +++ b/osu.Game.Rulesets.Taiko/Objects/TaikoHitWindows.cs @@ -17,8 +17,6 @@ namespace osu.Game.Rulesets.Taiko.Objects { HitResult.Miss, (270, 190, 140) }, }; - protected override HitResult LowestSuccessfulHitResult => HitResult.Good; - public override bool IsHitResultAllowed(HitResult result) { switch (result) diff --git a/osu.Game/Rulesets/Objects/HitWindows.cs b/osu.Game/Rulesets/Objects/HitWindows.cs index cf8769a105..40fb98a997 100644 --- a/osu.Game/Rulesets/Objects/HitWindows.cs +++ b/osu.Game/Rulesets/Objects/HitWindows.cs @@ -51,9 +51,19 @@ namespace osu.Game.Rulesets.Objects public double Miss { get; protected set; } /// - /// The with the largest hit window that produces a successful hit. + /// Retrieves the with the largest hit window that produces a successful hit. /// - protected virtual HitResult LowestSuccessfulHitResult => HitResult.Meh; + /// The lowest allowed successful . + protected HitResult LowestSuccessfulHitResult() + { + for (var result = HitResult.Meh; result <= HitResult.Perfect; ++result) + { + if (IsHitResultAllowed(result)) + return result; + } + + return HitResult.None; + } /// /// Check whether it is possible to achieve the provided . @@ -137,6 +147,6 @@ namespace osu.Game.Rulesets.Objects /// /// The time offset. /// Whether the can be hit at any point in the future from this time offset. - public bool CanBeHit(double timeOffset) => timeOffset <= HalfWindowFor(LowestSuccessfulHitResult); + public bool CanBeHit(double timeOffset) => timeOffset <= HalfWindowFor(LowestSuccessfulHitResult()); } }