From 43240ea85ed6923444c5135967619f28d4ce03c1 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 8 Feb 2019 15:20:11 +0900 Subject: [PATCH] Fix playlist issues with room creation --- .../Screens/Multi/Lounge/LoungeSubScreen.cs | 7 ++++++ .../Match/Components/MatchSettingsOverlay.cs | 6 ++++- .../Screens/Multi/MultiplayerComposite.cs | 3 --- osu.Game/Screens/Multi/RoomManager.cs | 23 ++++++------------- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/osu.Game/Screens/Multi/Lounge/LoungeSubScreen.cs b/osu.Game/Screens/Multi/Lounge/LoungeSubScreen.cs index 1fb0675f9e..1229d071ef 100644 --- a/osu.Game/Screens/Multi/Lounge/LoungeSubScreen.cs +++ b/osu.Game/Screens/Multi/Lounge/LoungeSubScreen.cs @@ -2,6 +2,8 @@ // See the LICENCE file in the repository root for full licence text. using System; +using osu.Framework.Allocation; +using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input.Events; @@ -24,6 +26,9 @@ namespace osu.Game.Screens.Multi.Lounge private readonly Action pushGameplayScreen; private readonly ProcessingOverlay processingOverlay; + [Resolved] + private Bindable currentRoom { get; set; } + public LoungeSubScreen(Action pushGameplayScreen) { this.pushGameplayScreen = pushGameplayScreen; @@ -125,6 +130,8 @@ namespace osu.Game.Screens.Multi.Lounge if (!this.IsCurrentScreen()) return; + currentRoom.Value = room; + this.Push(new MatchSubScreen(room, s => pushGameplayScreen?.Invoke(s))); } } diff --git a/osu.Game/Screens/Multi/Match/Components/MatchSettingsOverlay.cs b/osu.Game/Screens/Multi/Match/Components/MatchSettingsOverlay.cs index 75cabe8b35..e962784660 100644 --- a/osu.Game/Screens/Multi/Match/Components/MatchSettingsOverlay.cs +++ b/osu.Game/Screens/Multi/Match/Components/MatchSettingsOverlay.cs @@ -4,6 +4,7 @@ using System; using Humanizer; using osu.Framework.Allocation; +using osu.Framework.Configuration; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -65,6 +66,9 @@ namespace osu.Game.Screens.Multi.Match.Components [Resolved(CanBeNull = true)] private IRoomManager manager { get; set; } + [Resolved] + private Bindable currentRoom { get; set; } + [BackgroundDependencyLoader] private void load(OsuColour colours) { @@ -293,7 +297,7 @@ namespace osu.Game.Screens.Multi.Match.Components Duration.Value = DurationField.Current.Value; - manager?.CreateRoom(Room, onSuccess, onError); + manager?.CreateRoom(currentRoom, onSuccess, onError); processingOverlay.Show(); } diff --git a/osu.Game/Screens/Multi/MultiplayerComposite.cs b/osu.Game/Screens/Multi/MultiplayerComposite.cs index 1e68727438..1a16db97a4 100644 --- a/osu.Game/Screens/Multi/MultiplayerComposite.cs +++ b/osu.Game/Screens/Multi/MultiplayerComposite.cs @@ -17,9 +17,6 @@ namespace osu.Game.Screens.Multi { public class MultiplayerComposite : CompositeDrawable { - [Resolved] - protected Room Room { get; private set; } - [Resolved(typeof(Room))] protected Bindable RoomID { get; private set; } diff --git a/osu.Game/Screens/Multi/RoomManager.cs b/osu.Game/Screens/Multi/RoomManager.cs index f517ded6dc..c74787a0ed 100644 --- a/osu.Game/Screens/Multi/RoomManager.cs +++ b/osu.Game/Screens/Multi/RoomManager.cs @@ -61,20 +61,17 @@ namespace osu.Game.Screens.Multi { room.Host.Value = api.LocalUser; - addRoom(room); - joinRoom(room); - - RoomsUpdated?.Invoke(); - - onSuccess?.Invoke(room); - - return; - var req = new CreateRoomRequest(room); req.Success += result => { + joinedRoom = room; + update(room, result); + addRoom(room); + + RoomsUpdated?.Invoke(); + onSuccess?.Invoke(room); }; req.Failure += exception => @@ -98,7 +95,7 @@ namespace osu.Game.Screens.Multi currentJoinRoomRequest = new JoinRoomRequest(room, api.LocalUser.Value); currentJoinRoomRequest.Success += () => { - joinRoom(room); + joinedRoom = room; onSuccess?.Invoke(room); }; @@ -111,12 +108,6 @@ namespace osu.Game.Screens.Multi api.Queue(currentJoinRoomRequest); } - private void joinRoom(Room room) - { - currentRoom.Value = room; - joinedRoom = room; - } - public void PartRoom() { if (joinedRoom == null)