diff --git a/osu.Game/Modes/UI/HitRenderer.cs b/osu.Game/Modes/UI/HitRenderer.cs index 360551c89f..6b574552de 100644 --- a/osu.Game/Modes/UI/HitRenderer.cs +++ b/osu.Game/Modes/UI/HitRenderer.cs @@ -11,6 +11,7 @@ using osu.Game.Modes.Objects.Drawables; using osu.Game.Screens.Play; using System; using System.Collections.Generic; +using System.Linq; namespace osu.Game.Modes.UI { @@ -27,38 +28,25 @@ namespace osu.Game.Modes.UI public abstract Func MapPlayfieldToScreenSpace { get; } /// - /// The number of Judgements required to be triggered - /// before the game enters post-play routines. + /// Whether all the HitObjects have been judged. /// - protected abstract int JudgementCount { get; } + protected abstract bool AllObjectsJudged { get; } /// /// The beatmap this HitRenderer is initialized with. /// protected readonly Beatmap Beatmap; - private int maxJudgements; - private int countJudgements; - protected HitRenderer(Beatmap beatmap) { Beatmap = beatmap; } - protected override void LoadComplete() - { - base.LoadComplete(); - - maxJudgements = JudgementCount; - } - protected void TriggerOnJudgement(JudgementInfo j) { - countJudgements++; - OnJudgement?.Invoke(j); - if (countJudgements == maxJudgements) + if (AllObjectsJudged) OnAllJudged?.Invoke(); } } @@ -73,9 +61,7 @@ namespace osu.Game.Modes.UI protected virtual List Convert(Beatmap beatmap) => Converter.Convert(beatmap); protected override Container Content => content; - - private int judgementCount; - protected override int JudgementCount => judgementCount; + protected override bool AllObjectsJudged => Playfield.HitObjects.Children.All(h => h.Judgement.Result.HasValue); protected Playfield Playfield; @@ -117,8 +103,6 @@ namespace osu.Game.Modes.UI drawableObject.OnJudgement += onJudgement; Playfield.Add(drawableObject); - - judgementCount++; } Playfield.PostProcess();