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:
parent
4328223996
commit
24ba8261a1
@ -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;
|
@ -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();
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user