From c469d12d63be181e6d89c565419b1b4122030167 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 4 Dec 2018 18:18:17 +0900 Subject: [PATCH] Set room host when the room is refreshed --- .../Screens/Multi/Components/CreateRoomOverlay.cs | 13 +++++++++++++ .../Screens/Multi/Components/RoomSettingsOverlay.cs | 2 +- osu.Game/Screens/Multi/Screens/Lounge/Lounge.cs | 12 ++++++------ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/osu.Game/Screens/Multi/Components/CreateRoomOverlay.cs b/osu.Game/Screens/Multi/Components/CreateRoomOverlay.cs index 7e08e980a3..3a6224da26 100644 --- a/osu.Game/Screens/Multi/Components/CreateRoomOverlay.cs +++ b/osu.Game/Screens/Multi/Components/CreateRoomOverlay.cs @@ -3,6 +3,7 @@ using osu.Framework.Allocation; using osu.Game.Online.API; +using osu.Game.Online.Multiplayer; namespace osu.Game.Screens.Multi.Components { @@ -16,5 +17,17 @@ namespace osu.Game.Screens.Multi.Components { Room.Host.Value = api.LocalUser; } + + public override Room Room + { + get => base.Room; + set + { + base.Room = value; + + if (api != null && value != null) + value.Host.Value = api.LocalUser; + } + } } } diff --git a/osu.Game/Screens/Multi/Components/RoomSettingsOverlay.cs b/osu.Game/Screens/Multi/Components/RoomSettingsOverlay.cs index 896017b219..f50eefe4c6 100644 --- a/osu.Game/Screens/Multi/Components/RoomSettingsOverlay.cs +++ b/osu.Game/Screens/Multi/Components/RoomSettingsOverlay.cs @@ -163,7 +163,7 @@ namespace osu.Game.Screens.Multi.Components /// /// The room which settings are being applied to. /// - public Room Room + public virtual Room Room { get => room; set diff --git a/osu.Game/Screens/Multi/Screens/Lounge/Lounge.cs b/osu.Game/Screens/Multi/Screens/Lounge/Lounge.cs index 26d25aabfc..f307032600 100644 --- a/osu.Game/Screens/Multi/Screens/Lounge/Lounge.cs +++ b/osu.Game/Screens/Multi/Screens/Lounge/Lounge.cs @@ -19,7 +19,7 @@ namespace osu.Game.Screens.Multi.Screens.Lounge { private readonly Container content; private readonly SearchContainer search; - private readonly RoomSettingsOverlay settings; + private readonly CreateRoomOverlay createRoomOverlay; protected readonly FilterControl Filter; protected readonly FillFlowContainer RoomsContainer; @@ -71,7 +71,7 @@ namespace osu.Game.Screens.Multi.Screens.Lounge new Container { RelativeSizeAxes = Axes.Both, - Child = settings = new CreateRoomOverlay + Child = createRoomOverlay = new CreateRoomOverlay { RelativeSizeAxes = Axes.Both, Height = 0.9f, @@ -86,7 +86,7 @@ namespace osu.Game.Screens.Multi.Screens.Lounge Filter.Tabs.Current.ValueChanged += t => filterRooms(); Filter.Search.Exit += Exit; - settings.Applied = () => createRoom(settings.Room); + createRoomOverlay.Applied = () => createRoom(createRoomOverlay.Room); } protected override void UpdateAfterChildren() @@ -147,7 +147,7 @@ namespace osu.Game.Screens.Multi.Screens.Lounge { base.OnResuming(last); - settings.Room = new Room(); + createRoomOverlay.Room = new Room(); Filter.Search.HoldFocus = true; } @@ -161,9 +161,9 @@ namespace osu.Game.Screens.Multi.Screens.Lounge private void filterRooms() { if (Filter.Tabs.Current.Value == LoungeTab.Create) - settings.Show(); + createRoomOverlay.Show(); else - settings.Hide(); + createRoomOverlay.Hide(); search.SearchTerm = Filter.Search.Current.Value ?? string.Empty;