diff --git a/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/QueueController.cs b/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/QueueController.cs index c38f32746e..939b24fa67 100644 --- a/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/QueueController.cs +++ b/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/QueueController.cs @@ -40,7 +40,7 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue private BackgroundQueueNotification? backgroundNotification; private bool isBackgrounded; - private MatchmakingPool? lastJoinedPool; + public MatchmakingPool? LastJoinedPool { get; private set; } protected override void LoadComplete() { @@ -60,7 +60,7 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue public void JoinQueue(MatchmakingPool pool) { client.MatchmakingJoinQueue(pool.Id).FireAndForget(); - lastJoinedPool = pool; + LastJoinedPool = pool; } /// @@ -76,8 +76,8 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue /// public void RejoinQueue() { - if (lastJoinedPool != null) - JoinQueue(lastJoinedPool); + if (LastJoinedPool != null) + JoinQueue(LastJoinedPool); } /// @@ -151,8 +151,8 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue if (backgroundNotification != null) return; - Debug.Assert(lastJoinedPool != null); - notifications?.Post(backgroundNotification = new BackgroundQueueNotification(this, lastJoinedPool.Type)); + Debug.Assert(LastJoinedPool != null); + notifications?.Post(backgroundNotification = new BackgroundQueueNotification(this, LastJoinedPool.Type)); } private void closeNotifications() diff --git a/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs b/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs index 73eafecc80..827e5f7a92 100644 --- a/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs +++ b/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs @@ -345,8 +345,9 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.Queue { availablePools.Value = pools; - // Default to the user's ruleset for the initial pool selection. - selectedPool.Value = pools.FirstOrDefault(p => p.RulesetId == ruleset.Value.OnlineID) ?? pools.FirstOrDefault(); + // Default to the currently queueing pool, or fallback to the user's ruleset for the initial pool selection. + MatchmakingPool? lastQueuedPool = pools.FirstOrDefault(p => p.Id == queue.LastJoinedPool?.Id); + selectedPool.Value = lastQueuedPool ?? pools.FirstOrDefault(p => p.RulesetId == ruleset.Value.OnlineID) ?? pools.FirstOrDefault(); }); }