diff --git a/osu.Game/Screens/Play/LocalUserPlayingStates.cs b/osu.Game/Screens/Play/LocalUserPlayingStates.cs
index 89f9ea16f7..d1761692a7 100644
--- a/osu.Game/Screens/Play/LocalUserPlayingStates.cs
+++ b/osu.Game/Screens/Play/LocalUserPlayingStates.cs
@@ -6,12 +6,12 @@ namespace osu.Game.Screens.Play
public enum LocalUserPlayingStates
{
///
- /// The local player is not current in gameplay.
+ /// The local player is not current in gameplay. If watching a replay, gameplay always remains in this state.
///
NotPlaying,
///
- /// The local player is in a break, paused, or failed or passed but still at the gameplay screen.
+ /// The local player is in a break, paused, or failed but still at the gameplay screen.
///
Break,
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index ee11512bd4..0e0f3ae8a3 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -508,16 +508,16 @@ namespace osu.Game.Screens.Play
private void updateGameplayState()
{
- bool inGameplay = !DrawableRuleset.HasReplayLoaded.Value && !GameplayState.HasFailed;
- bool inBreak = breakTracker.IsBreakTime.Value || DrawableRuleset.IsPaused.Value;
+ bool inGameplay = !DrawableRuleset.HasReplayLoaded.Value;
+ bool inBreak = breakTracker.IsBreakTime.Value || DrawableRuleset.IsPaused.Value || GameplayState.HasFailed;
if (inGameplay)
playingState.Value = inBreak ? LocalUserPlayingStates.Break : LocalUserPlayingStates.Playing;
else
playingState.Value = LocalUserPlayingStates.NotPlaying;
- localUserPlaying.Value = playingState.Value != LocalUserPlayingStates.NotPlaying;
- OverlayActivationMode.Value = playingState.Value != LocalUserPlayingStates.NotPlaying ? OverlayActivation.Disabled : OverlayActivation.UserTriggered;
+ localUserPlaying.Value = playingState.Value == LocalUserPlayingStates.Playing;
+ OverlayActivationMode.Value = playingState.Value == LocalUserPlayingStates.Playing ? OverlayActivation.Disabled : OverlayActivation.UserTriggered;
}
private void updateSampleDisabledState()