diff --git a/osu.Game/Online/Multiplayer/MultiplayerRoomUser.cs b/osu.Game/Online/Multiplayer/MultiplayerRoomUser.cs
index f0b7dcbff8..50e539e8a6 100644
--- a/osu.Game/Online/Multiplayer/MultiplayerRoomUser.cs
+++ b/osu.Game/Online/Multiplayer/MultiplayerRoomUser.cs
@@ -65,5 +65,21 @@ namespace osu.Game.Online.Multiplayer
}
public override int GetHashCode() => UserID.GetHashCode();
+
+ ///
+ /// Whether this user has finished loading and can start gameplay.
+ ///
+ public bool CanStartGameplay()
+ {
+ switch (State)
+ {
+ case MultiplayerUserState.Loaded:
+ case MultiplayerUserState.ReadyForGameplay:
+ return true;
+
+ default:
+ return false;
+ }
+ }
}
}
diff --git a/osu.Game/Online/Multiplayer/MultiplayerUserState.cs b/osu.Game/Online/Multiplayer/MultiplayerUserState.cs
index c467ff84bb..d1369a7970 100644
--- a/osu.Game/Online/Multiplayer/MultiplayerUserState.cs
+++ b/osu.Game/Online/Multiplayer/MultiplayerUserState.cs
@@ -29,10 +29,16 @@ namespace osu.Game.Online.Multiplayer
WaitingForLoad,
///
- /// The user's client has marked itself as loaded and ready to begin gameplay.
+ /// The user has marked itself as loaded, but may still be adjusting settings prior to being ready for gameplay.
+ /// Players remaining in this state for an extended period of time will be automatically transitioned to the state by the server.
///
Loaded,
+ ///
+ /// The user has finished adjusting settings and is ready to start gameplay.
+ ///
+ ReadyForGameplay,
+
///
/// The user is currently playing in a game. This is a reserved state, and is set by the server.
///
diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/Participants/StateDisplay.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/Participants/StateDisplay.cs
index 2616b07c1f..658fc43e8d 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/Participants/StateDisplay.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/Participants/StateDisplay.cs
@@ -112,6 +112,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Participants
break;
case MultiplayerUserState.Loaded:
+ case MultiplayerUserState.ReadyForGameplay:
text.Text = "loaded";
icon.Icon = FontAwesome.Solid.DotCircle;
icon.Colour = colours.YellowLight;