1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-09 09:37:42 +08:00
osu-lazer/osu.Game/Screens/Multi/Header.cs

119 lines
4.2 KiB
C#
Raw Normal View History

2018-05-16 07:34:14 +08:00
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Screens;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Game.Graphics.UserInterface;
using osu.Game.Overlays.SearchableList;
2018-11-20 15:51:59 +08:00
using osuTK;
using osuTK.Graphics;
2018-05-16 07:34:14 +08:00
namespace osu.Game.Screens.Multi
{
public class Header : Container
{
public const float HEIGHT = 121;
2018-05-29 15:23:29 +08:00
private readonly OsuSpriteText screenType;
2018-05-17 17:19:55 +08:00
private readonly HeaderBreadcrumbControl breadcrumbs;
2018-05-16 07:34:14 +08:00
public Header(Screen initialScreen)
{
RelativeSizeAxes = Axes.X;
Height = HEIGHT;
Children = new Drawable[]
{
new Box
{
RelativeSizeAxes = Axes.Both,
Colour = OsuColour.FromHex(@"2f2043"),
},
new Container
{
RelativeSizeAxes = Axes.Both,
Padding = new MarginPadding { Horizontal = SearchableListOverlay.WIDTH_PADDING },
Children = new Drawable[]
{
new FillFlowContainer
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.BottomLeft,
Position = new Vector2(-35f, 5f),
AutoSizeAxes = Axes.Both,
Direction = FillDirection.Horizontal,
Spacing = new Vector2(10f, 0f),
Children = new Drawable[]
{
new SpriteIcon
{
Size = new Vector2(25),
Icon = FontAwesome.fa_osu_multi,
},
new FillFlowContainer
{
AutoSizeAxes = Axes.Both,
Direction = FillDirection.Horizontal,
Children = new[]
{
new OsuSpriteText
{
Text = "multiplayer ",
TextSize = 25,
},
2018-05-29 15:23:29 +08:00
screenType = new OsuSpriteText
2018-05-16 07:34:14 +08:00
{
TextSize = 25,
Font = @"Exo2.0-Light",
},
},
},
},
},
2018-05-17 17:19:55 +08:00
breadcrumbs = new HeaderBreadcrumbControl(initialScreen)
2018-05-16 07:34:14 +08:00
{
Anchor = Anchor.BottomLeft,
Origin = Anchor.BottomLeft,
RelativeSizeAxes = Axes.X,
},
},
},
};
breadcrumbs.Current.ValueChanged += s =>
{
2018-12-26 19:05:57 +08:00
if (s is IMultiplayerSubScreen mpScreen)
screenType.Text = mpScreen.ShortTitle.ToLowerInvariant();
};
2018-05-16 07:34:14 +08:00
breadcrumbs.Current.TriggerChange();
}
[BackgroundDependencyLoader]
private void load(OsuColour colours)
{
2018-05-29 15:23:29 +08:00
screenType.Colour = colours.Yellow;
2018-05-16 07:34:14 +08:00
breadcrumbs.StripColour = colours.Green;
}
2018-05-17 17:19:55 +08:00
private class HeaderBreadcrumbControl : ScreenBreadcrumbControl
{
2018-12-22 13:29:27 +08:00
public HeaderBreadcrumbControl(Screen initialScreen)
: base(initialScreen)
2018-05-17 17:19:55 +08:00
{
}
protected override void LoadComplete()
{
base.LoadComplete();
AccentColour = Color4.White;
}
}
2018-05-16 07:34:14 +08:00
}
}