1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-12 00:27:25 +08:00

Add applying to RoomSettingsOverlay.

This commit is contained in:
DrabWeb 2018-06-06 02:38:09 -03:00
parent 4328223996
commit 24ba8261a1
2 changed files with 47 additions and 7 deletions

View File

@ -13,12 +13,12 @@ using OpenTK;
namespace osu.Game.Screens.Multi.Screens.Match namespace osu.Game.Screens.Multi.Screens.Match
{ {
public class AvailabilityPicker : TabControl<RoomAvailability> public class RoomAvailabilityPicker : TabControl<RoomAvailability>
{ {
protected override TabItem<RoomAvailability> CreateTabItem(RoomAvailability value) => new AvailabilityPickerItem(value); protected override TabItem<RoomAvailability> CreateTabItem(RoomAvailability value) => new AvailabilityPickerItem(value);
protected override Dropdown<RoomAvailability> CreateDropdown() => null; protected override Dropdown<RoomAvailability> CreateDropdown() => null;
public AvailabilityPicker() public RoomAvailabilityPicker()
{ {
RelativeSizeAxes = Axes.X; RelativeSizeAxes = Axes.X;
Height = 35; Height = 35;

View File

@ -1,6 +1,7 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>. // Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
@ -10,6 +11,7 @@ using osu.Game.Graphics;
using osu.Game.Graphics.Containers; using osu.Game.Graphics.Containers;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osu.Game.Graphics.UserInterface; using osu.Game.Graphics.UserInterface;
using osu.Game.Online.Multiplayer;
using OpenTK; using OpenTK;
using OpenTK.Graphics; using OpenTK.Graphics;
@ -20,9 +22,30 @@ namespace osu.Game.Screens.Multi.Screens.Match
private const float transition_duration = 500; private const float transition_duration = 500;
private readonly Container content; private readonly Container content;
private readonly SettingsTextBox name, maxParticipants;
private readonly RoomAvailabilityPicker availability;
private readonly GameTypePicker type;
protected override Container<Drawable> Content => content; protected override Container<Drawable> 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() public RoomSettingsOverlay()
{ {
InternalChild = content = new Container InternalChild = content = new Container
@ -48,15 +71,15 @@ namespace osu.Game.Screens.Multi.Screens.Match
{ {
new Section("ROOM NAME") new Section("ROOM NAME")
{ {
Child = new SettingsTextBox(), Child = name = new SettingsTextBox(),
}, },
new Section("ROOM VISIBILITY") new Section("ROOM VISIBILITY")
{ {
Child = new AvailabilityPicker(), Child = availability =new RoomAvailabilityPicker(),
}, },
new Section("GAME TYPE") 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") new Section("MAX PARTICIPANTS")
{ {
Child = new SettingsTextBox(), Child = maxParticipants = new SettingsTextBox(),
}, },
new Section("PASSWORD (OPTIONAL)") new Section("PASSWORD (OPTIONAL)")
{ {
@ -84,7 +107,24 @@ namespace osu.Game.Screens.Multi.Screens.Match
Origin = Anchor.BottomCentre, Origin = Anchor.BottomCentre,
Size = new Vector2(230, 35), Size = new Vector2(230, 35),
Margin = new MarginPadding { Bottom = 20 }, 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();
},
}, },
}, },
}; };