diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs
index 0ee9196fb8..a32407d180 100644
--- a/osu.Game/Rulesets/UI/DrawableRuleset.cs
+++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs
@@ -13,6 +13,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
+using JetBrains.Annotations;
using osu.Framework.Bindables;
using osu.Framework.Graphics.Cursor;
using osu.Framework.Input;
@@ -390,6 +391,28 @@ namespace osu.Game.Rulesets.UI
///
public ResumeOverlay ResumeOverlay { get; protected set; }
+ ///
+ /// Returns first available provided by a .
+ ///
+ [CanBeNull]
+ public HitWindows FirstAvailableHitWindows
+ {
+ get
+ {
+ foreach (var h in Objects)
+ {
+ if (h.HitWindows != null)
+ return h.HitWindows;
+
+ foreach (var n in h.NestedHitObjects)
+ if (n.HitWindows != null)
+ return n.HitWindows;
+ }
+
+ return null;
+ }
+ }
+
protected virtual ResumeOverlay CreateResumeOverlay() => null;
///
diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs
index eac45f9214..eee7235a6e 100644
--- a/osu.Game/Screens/Play/HUDOverlay.cs
+++ b/osu.Game/Screens/Play/HUDOverlay.cs
@@ -3,7 +3,6 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
@@ -259,9 +258,7 @@ namespace osu.Game.Screens.Play
Margin = new MarginPadding { Top = 20, Right = 10 },
};
- protected virtual HitErrorDisplay CreateHitErrorDisplayOverlay() => new HitErrorDisplay(
- scoreProcessor,
- drawableRuleset.Objects.Concat(drawableRuleset.Objects.SelectMany(h => h.NestedHitObjects)).FirstOrDefault(h => h.HitWindows != null)?.HitWindows);
+ protected virtual HitErrorDisplay CreateHitErrorDisplayOverlay() => new HitErrorDisplay(scoreProcessor, drawableRuleset.FirstAvailableHitWindows);
protected virtual PlayerSettingsOverlay CreatePlayerSettingsOverlay() => new PlayerSettingsOverlay();