mirror of
https://github.com/osukey/osukey.git
synced 2025-07-02 08:49:59 +09:00
Re-implement the match header
This commit is contained in:
@ -1,41 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Online.Multiplayer;
|
|
||||||
using osu.Game.Screens.Multi.Match.Components;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Game.Audio;
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
|
||||||
{
|
|
||||||
[Cached(typeof(IPreviewTrackOwner))]
|
|
||||||
public class TestSceneMatchBeatmapPanel : MultiplayerTestScene, IPreviewTrackOwner
|
|
||||||
{
|
|
||||||
public override IReadOnlyList<Type> RequiredTypes => new[]
|
|
||||||
{
|
|
||||||
typeof(MatchBeatmapPanel)
|
|
||||||
};
|
|
||||||
|
|
||||||
[Resolved]
|
|
||||||
private PreviewTrackManager previewTrackManager { get; set; }
|
|
||||||
|
|
||||||
public TestSceneMatchBeatmapPanel()
|
|
||||||
{
|
|
||||||
Add(new MatchBeatmapPanel
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
});
|
|
||||||
|
|
||||||
Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1763072 } } });
|
|
||||||
Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 2101557 } } });
|
|
||||||
Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1973466 } } });
|
|
||||||
Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 2109801 } } });
|
|
||||||
Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1922035 } } });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,10 +5,10 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Multiplayer.GameTypes;
|
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Rulesets.Osu.Mods;
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
using osu.Game.Screens.Multi.Match.Components;
|
using osu.Game.Screens.Multi.Match.Components;
|
||||||
|
using osu.Game.Users;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -45,7 +45,8 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Room.Type.Value = new GameTypeTimeshift();
|
Room.Name.Value = "A very awesome room";
|
||||||
|
Room.Host.Value = new User { Id = 2, Username = "peppy" };
|
||||||
|
|
||||||
Child = new Header();
|
Child = new Header();
|
||||||
}
|
}
|
||||||
|
@ -1,84 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Online.Multiplayer;
|
|
||||||
using osu.Game.Online.Multiplayer.RoomStatuses;
|
|
||||||
using osu.Game.Rulesets;
|
|
||||||
using osu.Game.Screens.Multi.Match.Components;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
|
||||||
{
|
|
||||||
[TestFixture]
|
|
||||||
public class TestSceneMatchInfo : MultiplayerTestScene
|
|
||||||
{
|
|
||||||
public override IReadOnlyList<Type> RequiredTypes => new[]
|
|
||||||
{
|
|
||||||
typeof(Info),
|
|
||||||
typeof(HeaderButton),
|
|
||||||
typeof(ReadyButton),
|
|
||||||
typeof(MatchBeatmapPanel)
|
|
||||||
};
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load(RulesetStore rulesets)
|
|
||||||
{
|
|
||||||
Add(new Info());
|
|
||||||
|
|
||||||
AddStep(@"set name", () => Room.Name.Value = @"Room Name?");
|
|
||||||
AddStep(@"set availability", () => Room.Availability.Value = RoomAvailability.FriendsOnly);
|
|
||||||
AddStep(@"set status", () => Room.Status.Value = new RoomStatusPlaying());
|
|
||||||
AddStep(@"set beatmap", () =>
|
|
||||||
{
|
|
||||||
Room.Playlist.Clear();
|
|
||||||
Room.Playlist.Add(new PlaylistItem
|
|
||||||
{
|
|
||||||
Beatmap =
|
|
||||||
{
|
|
||||||
Value = new BeatmapInfo
|
|
||||||
{
|
|
||||||
StarDifficulty = 2.4,
|
|
||||||
Ruleset = rulesets.GetRuleset(0),
|
|
||||||
Metadata = new BeatmapMetadata
|
|
||||||
{
|
|
||||||
Title = @"My Song",
|
|
||||||
Artist = @"VisualTests",
|
|
||||||
AuthorString = @"osu!lazer",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
AddStep(@"change name", () => Room.Name.Value = @"Room Name!");
|
|
||||||
AddStep(@"change availability", () => Room.Availability.Value = RoomAvailability.InviteOnly);
|
|
||||||
AddStep(@"change status", () => Room.Status.Value = new RoomStatusOpen());
|
|
||||||
AddStep(@"null beatmap", () => Room.Playlist.Clear());
|
|
||||||
AddStep(@"change beatmap", () =>
|
|
||||||
{
|
|
||||||
Room.Playlist.Clear();
|
|
||||||
Room.Playlist.Add(new PlaylistItem
|
|
||||||
{
|
|
||||||
Beatmap =
|
|
||||||
{
|
|
||||||
Value = new BeatmapInfo
|
|
||||||
{
|
|
||||||
StarDifficulty = 4.2,
|
|
||||||
Ruleset = rulesets.GetRuleset(3),
|
|
||||||
Metadata = new BeatmapMetadata
|
|
||||||
{
|
|
||||||
Title = @"Your Song",
|
|
||||||
Artist = @"Tester",
|
|
||||||
AuthorString = @"Someone",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +1,23 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Bindables;
|
|
||||||
using osu.Framework.Extensions.Color4Extensions;
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Colour;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
|
||||||
using osu.Game.Beatmaps.Drawables;
|
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Graphics.Containers;
|
||||||
using osu.Game.Overlays.SearchableList;
|
using osu.Game.Graphics.Sprites;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Users.Drawables;
|
||||||
using osu.Game.Screens.Multi.Components;
|
|
||||||
using osu.Game.Screens.Play.HUD;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osuTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Screens.Multi.Match.Components
|
namespace osu.Game.Screens.Multi.Match.Components
|
||||||
{
|
{
|
||||||
public class Header : MultiplayerComposite
|
public class Header : MultiplayerComposite
|
||||||
{
|
{
|
||||||
public const float HEIGHT = 200;
|
public const float HEIGHT = 50;
|
||||||
|
|
||||||
public readonly BindableBool ShowBeatmapPanel = new BindableBool();
|
private UpdateableAvatar avatar;
|
||||||
|
private LinkFlowContainer hostText;
|
||||||
public MatchTabControl Tabs { get; private set; }
|
|
||||||
|
|
||||||
public Action RequestBeatmapSelection;
|
|
||||||
|
|
||||||
private MatchBeatmapPanel beatmapPanel;
|
|
||||||
private ModDisplay modDisplay;
|
|
||||||
|
|
||||||
public Header()
|
public Header()
|
||||||
{
|
{
|
||||||
@ -44,128 +28,52 @@ namespace osu.Game.Screens.Multi.Match.Components
|
|||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
BeatmapSelectButton beatmapButton;
|
InternalChild = new FillFlowContainer
|
||||||
|
|
||||||
InternalChildren = new Drawable[]
|
|
||||||
{
|
{
|
||||||
new Container
|
AutoSizeAxes = Axes.Both,
|
||||||
|
Direction = FillDirection.Horizontal,
|
||||||
|
Spacing = new Vector2(10, 0),
|
||||||
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
avatar = new UpdateableAvatar
|
||||||
|
{
|
||||||
|
Size = new Vector2(50),
|
||||||
Masking = true,
|
Masking = true,
|
||||||
Children = new Drawable[]
|
CornerRadius = 10,
|
||||||
{
|
|
||||||
new HeaderBackgroundSprite { RelativeSizeAxes = Axes.Both },
|
|
||||||
new Box
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.7f), Color4.Black.Opacity(0.8f)),
|
|
||||||
},
|
},
|
||||||
beatmapPanel = new MatchBeatmapPanel
|
|
||||||
{
|
|
||||||
Anchor = Anchor.CentreRight,
|
|
||||||
Origin = Anchor.CentreRight,
|
|
||||||
Margin = new MarginPadding { Right = 100 },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
new Box
|
|
||||||
{
|
|
||||||
Anchor = Anchor.BottomLeft,
|
|
||||||
Origin = Anchor.BottomLeft,
|
|
||||||
RelativeSizeAxes = Axes.X,
|
|
||||||
Height = 1,
|
|
||||||
Colour = colours.Yellow
|
|
||||||
},
|
|
||||||
new Container
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Padding = new MarginPadding { Horizontal = SearchableListOverlay.WIDTH_PADDING + OsuScreen.HORIZONTAL_OVERFLOW_PADDING },
|
|
||||||
Children = new Drawable[]
|
|
||||||
{
|
|
||||||
new FillFlowContainer
|
new FillFlowContainer
|
||||||
{
|
{
|
||||||
AutoSizeAxes = Axes.Both,
|
AutoSizeAxes = Axes.Both,
|
||||||
Padding = new MarginPadding { Top = 20 },
|
|
||||||
Direction = FillDirection.Vertical,
|
Direction = FillDirection.Vertical,
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new BeatmapTypeInfo(),
|
new OsuSpriteText
|
||||||
modDisplay = new ModDisplay
|
|
||||||
{
|
{
|
||||||
Scale = new Vector2(0.75f),
|
Font = OsuFont.GetFont(size: 30),
|
||||||
DisplayUnrankedText = false
|
Current = { BindTarget = RoomName }
|
||||||
},
|
},
|
||||||
|
hostText = new LinkFlowContainer(s => s.Font = OsuFont.GetFont(size: 20, weight: FontWeight.SemiBold))
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both,
|
||||||
|
Direction = FillDirection.Horizontal,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
new Container
|
|
||||||
{
|
|
||||||
Anchor = Anchor.TopRight,
|
|
||||||
Origin = Anchor.TopRight,
|
|
||||||
RelativeSizeAxes = Axes.Y,
|
|
||||||
Width = 200,
|
|
||||||
Padding = new MarginPadding { Vertical = 10 },
|
|
||||||
Child = beatmapButton = new BeatmapSelectButton
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Height = 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Tabs = new MatchTabControl
|
|
||||||
{
|
|
||||||
Anchor = Anchor.BottomLeft,
|
|
||||||
Origin = Anchor.BottomLeft,
|
|
||||||
RelativeSizeAxes = Axes.X
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
beatmapButton.Action = () => RequestBeatmapSelection?.Invoke();
|
Host.BindValueChanged(host =>
|
||||||
|
|
||||||
Playlist.ItemsAdded += _ => updateMods();
|
|
||||||
Playlist.ItemsRemoved += _ => updateMods();
|
|
||||||
|
|
||||||
updateMods();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
avatar.User = host.NewValue;
|
||||||
ShowBeatmapPanel.BindValueChanged(value => beatmapPanel.FadeTo(value.NewValue ? 1 : 0, 200, Easing.OutQuint), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateMods()
|
hostText.Clear();
|
||||||
|
|
||||||
|
if (host.NewValue != null)
|
||||||
{
|
{
|
||||||
var item = Playlist.FirstOrDefault();
|
hostText.AddText("hosted by ");
|
||||||
|
hostText.AddUserLink(host.NewValue);
|
||||||
modDisplay.Current.Value = item?.RequiredMods?.ToArray() ?? Array.Empty<Mod>();
|
|
||||||
}
|
|
||||||
|
|
||||||
private class BeatmapSelectButton : HeaderButton
|
|
||||||
{
|
|
||||||
[Resolved(typeof(Room), nameof(Room.RoomID))]
|
|
||||||
private Bindable<int?> roomId { get; set; }
|
|
||||||
|
|
||||||
public BeatmapSelectButton()
|
|
||||||
{
|
|
||||||
Text = "Select beatmap";
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load()
|
|
||||||
{
|
|
||||||
roomId.BindValueChanged(id => this.FadeTo(id.NewValue.HasValue ? 0 : 1), true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class HeaderBackgroundSprite : MultiplayerBackgroundSprite
|
|
||||||
{
|
|
||||||
protected override UpdateableBeatmapBackgroundSprite CreateBackgroundSprite() => new BackgroundSprite { RelativeSizeAxes = Axes.Both };
|
|
||||||
|
|
||||||
private class BackgroundSprite : UpdateableBeatmapBackgroundSprite
|
|
||||||
{
|
|
||||||
protected override double TransformDuration => 200;
|
|
||||||
}
|
}
|
||||||
|
}, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,67 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Game.Online.API;
|
|
||||||
using osu.Game.Online.API.Requests;
|
|
||||||
using osu.Game.Overlays.Direct;
|
|
||||||
using osu.Game.Rulesets;
|
|
||||||
|
|
||||||
namespace osu.Game.Screens.Multi.Match.Components
|
|
||||||
{
|
|
||||||
public class MatchBeatmapPanel : MultiplayerComposite
|
|
||||||
{
|
|
||||||
[Resolved]
|
|
||||||
private IAPIProvider api { get; set; }
|
|
||||||
|
|
||||||
[Resolved]
|
|
||||||
private RulesetStore rulesets { get; set; }
|
|
||||||
|
|
||||||
private CancellationTokenSource loadCancellation;
|
|
||||||
private GetBeatmapSetRequest request;
|
|
||||||
private DirectGridPanel panel;
|
|
||||||
|
|
||||||
public MatchBeatmapPanel()
|
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.Both;
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load()
|
|
||||||
{
|
|
||||||
Playlist.ItemsAdded += _ => loadNewPanel();
|
|
||||||
Playlist.ItemsRemoved += _ => loadNewPanel();
|
|
||||||
|
|
||||||
loadNewPanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadNewPanel()
|
|
||||||
{
|
|
||||||
loadCancellation?.Cancel();
|
|
||||||
request?.Cancel();
|
|
||||||
|
|
||||||
panel?.FadeOut(200);
|
|
||||||
panel?.Expire();
|
|
||||||
panel = null;
|
|
||||||
|
|
||||||
var beatmap = Playlist.FirstOrDefault()?.Beatmap.Value;
|
|
||||||
|
|
||||||
if (beatmap?.OnlineBeatmapID == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
loadCancellation = new CancellationTokenSource();
|
|
||||||
|
|
||||||
request = new GetBeatmapSetRequest(beatmap.OnlineBeatmapID.Value, BeatmapSetLookupType.BeatmapId);
|
|
||||||
request.Success += res => Schedule(() =>
|
|
||||||
{
|
|
||||||
panel = new DirectGridPanel(res.ToBeatmapSet(rulesets));
|
|
||||||
LoadComponentAsync(panel, AddInternal, loadCancellation.Token);
|
|
||||||
});
|
|
||||||
|
|
||||||
api.Queue(request);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using osu.Framework.Bindables;
|
|
||||||
|
|
||||||
namespace osu.Game.Screens.Multi.Match.Components
|
|
||||||
{
|
|
||||||
public abstract class MatchPage
|
|
||||||
{
|
|
||||||
public abstract string Name { get; }
|
|
||||||
|
|
||||||
public readonly BindableBool Enabled = new BindableBool(true);
|
|
||||||
|
|
||||||
public override string ToString() => Name;
|
|
||||||
public override int GetHashCode() => GetType().GetHashCode();
|
|
||||||
public override bool Equals(object obj) => GetType() == obj?.GetType();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SettingsMatchPage : MatchPage
|
|
||||||
{
|
|
||||||
public override string Name => "Settings";
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RoomMatchPage : MatchPage
|
|
||||||
{
|
|
||||||
public override string Name => "Room";
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Framework.Bindables;
|
|
||||||
using osu.Framework.Extensions.IEnumerableExtensions;
|
|
||||||
using osu.Framework.Graphics.UserInterface;
|
|
||||||
using osu.Framework.Input.Events;
|
|
||||||
using osu.Game.Graphics.UserInterface;
|
|
||||||
using osu.Game.Online.Multiplayer;
|
|
||||||
using osuTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Screens.Multi.Match.Components
|
|
||||||
{
|
|
||||||
public class MatchTabControl : PageTabControl<MatchPage>
|
|
||||||
{
|
|
||||||
[Resolved(typeof(Room), nameof(Room.RoomID))]
|
|
||||||
private Bindable<int?> roomId { get; set; }
|
|
||||||
|
|
||||||
public MatchTabControl()
|
|
||||||
{
|
|
||||||
AddItem(new RoomMatchPage());
|
|
||||||
AddItem(new SettingsMatchPage());
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load()
|
|
||||||
{
|
|
||||||
roomId.BindValueChanged(id =>
|
|
||||||
{
|
|
||||||
if (id.NewValue.HasValue)
|
|
||||||
{
|
|
||||||
Items.ForEach(t => t.Enabled.Value = !(t is SettingsMatchPage));
|
|
||||||
Current.Value = new RoomMatchPage();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Items.ForEach(t => t.Enabled.Value = t is SettingsMatchPage);
|
|
||||||
Current.Value = new SettingsMatchPage();
|
|
||||||
}
|
|
||||||
}, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override TabItem<MatchPage> CreateTabItem(MatchPage value) => new TabItem(value);
|
|
||||||
|
|
||||||
private class TabItem : PageTabItem
|
|
||||||
{
|
|
||||||
private readonly IBindable<bool> enabled = new BindableBool();
|
|
||||||
|
|
||||||
public TabItem(MatchPage value)
|
|
||||||
: base(value)
|
|
||||||
{
|
|
||||||
enabled.BindTo(value.Enabled);
|
|
||||||
enabled.BindValueChanged(enabled => Colour = enabled.NewValue ? Color4.White : Color4.Gray, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override bool OnClick(ClickEvent e)
|
|
||||||
{
|
|
||||||
if (!enabled.Value)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return base.OnClick(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -15,7 +15,6 @@ using osu.Game.Online.Multiplayer.GameTypes;
|
|||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Screens.Multi.Match.Components;
|
using osu.Game.Screens.Multi.Match.Components;
|
||||||
using osu.Game.Screens.Multi.Play;
|
using osu.Game.Screens.Multi.Play;
|
||||||
using osu.Game.Screens.Select;
|
|
||||||
using PlaylistItem = osu.Game.Online.Multiplayer.PlaylistItem;
|
using PlaylistItem = osu.Game.Online.Multiplayer.PlaylistItem;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Multi.Match
|
namespace osu.Game.Screens.Multi.Match
|
||||||
@ -78,17 +77,6 @@ namespace osu.Game.Screens.Multi.Match
|
|||||||
header = new Components.Header
|
header = new Components.Header
|
||||||
{
|
{
|
||||||
Depth = -1,
|
Depth = -1,
|
||||||
RequestBeatmapSelection = () =>
|
|
||||||
{
|
|
||||||
this.Push(new MatchSongSelect
|
|
||||||
{
|
|
||||||
Selected = item =>
|
|
||||||
{
|
|
||||||
Playlist.Clear();
|
|
||||||
Playlist.Add(item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new Drawable[] { info = new Info { OnStart = onStart } },
|
new Drawable[] { info = new Info { OnStart = onStart } },
|
||||||
@ -145,18 +133,6 @@ namespace osu.Game.Screens.Multi.Match
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
header.Tabs.Current.BindValueChanged(tab =>
|
|
||||||
{
|
|
||||||
const float fade_duration = 500;
|
|
||||||
|
|
||||||
var settingsDisplayed = tab.NewValue is SettingsMatchPage;
|
|
||||||
|
|
||||||
header.ShowBeatmapPanel.Value = !settingsDisplayed;
|
|
||||||
settings.State.Value = settingsDisplayed ? Visibility.Visible : Visibility.Hidden;
|
|
||||||
info.FadeTo(settingsDisplayed ? 0 : 1, fade_duration, Easing.OutQuint);
|
|
||||||
bottomRow.FadeTo(settingsDisplayed ? 0 : 1, fade_duration, Easing.OutQuint);
|
|
||||||
}, true);
|
|
||||||
|
|
||||||
beatmapManager.ItemAdded += beatmapAdded;
|
beatmapManager.ItemAdded += beatmapAdded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user