diff --git a/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs index edfa92e629..ff79c917cb 100644 --- a/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs +++ b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs @@ -122,21 +122,24 @@ namespace osu.Game.Rulesets.Osu.UI RegisterPool(20, 100); - var sliders = osuBeatmap.HitObjects.OfType(); + int maxRepeatsOnOneSlider = 0; + int maxTicksOnOneSlider = 0; - if (sliders.Any()) + var sliders = osuBeatmap?.HitObjects.OfType(); + + if (sliders?.Any() == true) { // handle edge cases where a beatmap has a slider with many repeats. - int maxRepeatsOnOneSlider = osuBeatmap.HitObjects.OfType().Max(s => s.RepeatCount); - int maxTicksOnOneSlider = osuBeatmap.HitObjects.OfType().Max(s => s.NestedHitObjects.OfType().Count()); - - RegisterPool(20, 100); - RegisterPool(20, 100); - RegisterPool(20, 100); - RegisterPool(Math.Max(maxTicksOnOneSlider, 20), Math.Max(maxTicksOnOneSlider, 200)); - RegisterPool(Math.Max(maxRepeatsOnOneSlider, 20), Math.Max(maxRepeatsOnOneSlider, 200)); + maxRepeatsOnOneSlider = sliders?.Max(s => s.RepeatCount) ?? 0; + maxTicksOnOneSlider = sliders?.Max(s => s.NestedHitObjects.OfType().Count()) ?? 0; } + RegisterPool(20, 100); + RegisterPool(20, 100); + RegisterPool(20, 100); + RegisterPool(Math.Max(maxTicksOnOneSlider, 20), Math.Max(maxTicksOnOneSlider, 200)); + RegisterPool(Math.Max(maxRepeatsOnOneSlider, 20), Math.Max(maxRepeatsOnOneSlider, 200)); + RegisterPool(2, 20); RegisterPool(10, 200); RegisterPool(10, 200);