diff --git a/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs b/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs index a3bbad6984..26b952a9b0 100644 --- a/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs @@ -35,21 +35,19 @@ namespace osu.Game.Rulesets.Osu.UI protected new OsuRulesetConfigManager Config => (OsuRulesetConfigManager)base.Config; - [Resolved] - private MultiSpectatorScreen? multiSpectatorScreen { get; set; } - public DrawableOsuRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList? mods = null) : base(ruleset, beatmap, mods) { } [BackgroundDependencyLoader] - private void load(Player? player) + private void load(Player? player, MultiSpectatorScreen? multiSpectatorScreen) { if (player is ReplayPlayer || player is SpectatorPlayer) { PlayfieldAdjustmentContainer.Add(new ReplayAnalysisOverlay(player.Score.Replay)); + // if in multiplayer spectator mode, place the settings elsewhere if (multiSpectatorScreen == null) player.AddSettings(new ReplayAnalysisSettings(Config)); else if (!multiSpectatorScreen.SettingsAdded) diff --git a/osu.Game.Rulesets.Osu/UI/ReplayAnalysisOverlay.cs b/osu.Game.Rulesets.Osu/UI/ReplayAnalysisOverlay.cs index a5eacc63b0..0fe9dc9628 100644 --- a/osu.Game.Rulesets.Osu/UI/ReplayAnalysisOverlay.cs +++ b/osu.Game.Rulesets.Osu/UI/ReplayAnalysisOverlay.cs @@ -59,8 +59,12 @@ namespace osu.Game.Rulesets.Osu.UI } /// - /// false for loading, true for loaded + /// Invalidated when containers are not loaded nor loading, false if loading, and true if loaded /// + /// + /// Knowing the loading/loaded state is for avoiding an enumeration error when adding + /// new entries and not starting a new load while loading + /// private readonly Cached loadState = new Cached(); private CancellationTokenSource? generationCancellationSource;