From 74db255c78b7445bb70ac1f7aea51716922f2ff6 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Sun, 12 Mar 2017 01:19:51 +0900 Subject: [PATCH] Move back to using an abstract method to determine if all objects have been judged. Because sliderticks provide judgements even though they are added as nested hitobjects, the count method would not work to determine if all hitobjects have been judged. This needs a little bit more thought put in... --- osu.Game/Modes/UI/HitRenderer.cs | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) 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.Screens.Play; using System; using System.Collections.Generic; +using System.Linq; namespace osu.Game.Modes.UI { @@ -27,38 +28,25 @@ public abstract class HitRenderer : Container 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 @@ public abstract class HitRenderer : HitRenderer 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 @@ private void loadObjects() drawableObject.OnJudgement += onJudgement; Playfield.Add(drawableObject); - - judgementCount++; } Playfield.PostProcess();