diff --git a/osu.Game/Rulesets/UI/RulesetContainer.cs b/osu.Game/Rulesets/UI/RulesetContainer.cs
index 17417856a1..a7472f4dbc 100644
--- a/osu.Game/Rulesets/UI/RulesetContainer.cs
+++ b/osu.Game/Rulesets/UI/RulesetContainer.cs
@@ -42,7 +42,7 @@ namespace osu.Game.Rulesets.UI
///
/// The input manager for this RulesetContainer.
///
- internal IHasReplayHandler ReplayInputManager => (IHasReplayHandler)KeyBindingInputManager;
+ internal IHasReplayHandler ReplayInputManager => KeyBindingInputManager as IHasReplayHandler;
///
/// The key conversion input manager for this RulesetContainer.
@@ -57,7 +57,7 @@ namespace osu.Game.Rulesets.UI
///
/// Whether we have a replay loaded currently.
///
- public bool HasReplayLoaded => ReplayInputManager.ReplayInputHandler != null;
+ public bool HasReplayLoaded => ReplayInputManager?.ReplayInputHandler != null;
public abstract IEnumerable Objects { get; }
@@ -107,6 +107,9 @@ namespace osu.Game.Rulesets.UI
/// The replay, null for local input.
public virtual void SetReplay(Replay replay)
{
+ if (ReplayInputManager == null)
+ throw new InvalidOperationException($"A {nameof(KeyBindingInputManager)} which supports replay loading is not available");
+
Replay = replay;
ReplayInputManager.ReplayInputHandler = replay != null ? CreateReplayInputHandler(replay) : null;
}