From 24ba8261a1ebadfdd9db80ac03b1790d0b05f84a Mon Sep 17 00:00:00 2001 From: DrabWeb Date: Wed, 6 Jun 2018 02:38:09 -0300 Subject: [PATCH] Add applying to RoomSettingsOverlay. --- ...ityPicker.cs => RoomAvailabilityPicker.cs} | 4 +- .../Screens/Match/RoomSettingsOverlay.cs | 50 +++++++++++++++++-- 2 files changed, 47 insertions(+), 7 deletions(-) rename osu.Game/Screens/Multi/Screens/Match/{AvailabilityPicker.cs => RoomAvailabilityPicker.cs} (95%) diff --git a/osu.Game/Screens/Multi/Screens/Match/AvailabilityPicker.cs b/osu.Game/Screens/Multi/Screens/Match/RoomAvailabilityPicker.cs similarity index 95% rename from osu.Game/Screens/Multi/Screens/Match/AvailabilityPicker.cs rename to osu.Game/Screens/Multi/Screens/Match/RoomAvailabilityPicker.cs index db79b7811d..29a75b4904 100644 --- a/osu.Game/Screens/Multi/Screens/Match/AvailabilityPicker.cs +++ b/osu.Game/Screens/Multi/Screens/Match/RoomAvailabilityPicker.cs @@ -13,12 +13,12 @@ using OpenTK; namespace osu.Game.Screens.Multi.Screens.Match { - public class AvailabilityPicker : TabControl + public class RoomAvailabilityPicker : TabControl { protected override TabItem CreateTabItem(RoomAvailability value) => new AvailabilityPickerItem(value); protected override Dropdown CreateDropdown() => null; - public AvailabilityPicker() + public RoomAvailabilityPicker() { RelativeSizeAxes = Axes.X; Height = 35; diff --git a/osu.Game/Screens/Multi/Screens/Match/RoomSettingsOverlay.cs b/osu.Game/Screens/Multi/Screens/Match/RoomSettingsOverlay.cs index 15bf9f6c0d..3f59e748f4 100644 --- a/osu.Game/Screens/Multi/Screens/Match/RoomSettingsOverlay.cs +++ b/osu.Game/Screens/Multi/Screens/Match/RoomSettingsOverlay.cs @@ -1,6 +1,7 @@ // Copyright (c) 2007-2018 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -10,6 +11,7 @@ using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; +using osu.Game.Online.Multiplayer; using OpenTK; using OpenTK.Graphics; @@ -20,9 +22,30 @@ namespace osu.Game.Screens.Multi.Screens.Match private const float transition_duration = 500; private readonly Container content; + private readonly SettingsTextBox name, maxParticipants; + private readonly RoomAvailabilityPicker availability; + private readonly GameTypePicker type; protected override Container Content => content; + private Room room; + public Room Room + { + get => room; + set + { + if (value == room) return; + room = value; + + name.Text = room.Name.Value; + maxParticipants.Text = room.MaxParticipants.Value?.ToString(); + availability.Current.Value = room.Availability.Value; + type.Current.Value = room.Type.Value; + } + } + + public Action OnApply; + public RoomSettingsOverlay() { InternalChild = content = new Container @@ -48,15 +71,15 @@ namespace osu.Game.Screens.Multi.Screens.Match { new Section("ROOM NAME") { - Child = new SettingsTextBox(), + Child = name = new SettingsTextBox(), }, new Section("ROOM VISIBILITY") { - Child = new AvailabilityPicker(), + Child = availability =new RoomAvailabilityPicker(), }, new Section("GAME TYPE") { - Child = new GameTypePicker(), + Child = type = new GameTypePicker(), }, }, }, @@ -68,7 +91,7 @@ namespace osu.Game.Screens.Multi.Screens.Match { new Section("MAX PARTICIPANTS") { - Child = new SettingsTextBox(), + Child = maxParticipants = new SettingsTextBox(), }, new Section("PASSWORD (OPTIONAL)") { @@ -84,7 +107,24 @@ namespace osu.Game.Screens.Multi.Screens.Match Origin = Anchor.BottomCentre, Size = new Vector2(230, 35), Margin = new MarginPadding { Bottom = 20 }, - Action = Hide, + Action = () => + { + if (room != null) + { + room.Name.Value = name.Text; + room.Availability.Value = availability.Current.Value; + room.Type.Value = type.Current.Value; + + int max; + if (int.TryParse(maxParticipants.Text, out max)) + room.MaxParticipants.Value = max; + else + room.MaxParticipants.Value = null; + } + + OnApply?.Invoke(); + Hide(); + }, }, }, };