1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 03:27:24 +08:00
osu-lazer/osu.Game/Overlays/Changelog/ChangelogHeader.cs

207 lines
7.9 KiB
C#
Raw Normal View History

2019-05-17 10:43:36 +08:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2019-05-13 16:14:52 +08:00
// See the LICENCE file in the repository root for full licence text.
2018-07-17 05:50:22 +08:00
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Textures;
using osu.Game.Graphics.Sprites;
using osu.Game.Overlays.Changelog.Header;
using osu.Game.Graphics;
using osu.Game.Graphics.UserInterface;
2019-05-12 23:36:05 +08:00
using osuTK;
using osuTK.Graphics;
2018-07-17 05:50:22 +08:00
namespace osu.Game.Overlays.Changelog
{
public class ChangelogHeader : OverlayHeader
2018-07-17 05:50:22 +08:00
{
private OsuSpriteText titleStream;
private BreadcrumbListing listing;
private SpriteIcon chevron;
private BreadcrumbRelease releaseStream;
2018-07-17 05:50:22 +08:00
public delegate void ListingSelectedEventHandler();
public event ListingSelectedEventHandler ListingSelected;
2018-07-20 01:07:24 +08:00
2018-07-17 05:50:22 +08:00
private const float title_height = 50;
private const float icon_size = 50;
private const float icon_margin = 20;
private const float version_height = 40;
public void ShowBuild(string displayName, string displayVersion)
{
listing.Deactivate();
releaseStream.ShowBuild($"{displayName} {displayVersion}");
titleStream.Text = displayName;
titleStream.FlashColour(Color4.White, 500, Easing.OutQuad);
chevron.MoveToX(0, 100).FadeIn(100);
}
public void ShowListing()
2018-07-17 05:50:22 +08:00
{
releaseStream.Deactivate();
listing.Activate();
titleStream.Text = "Listing";
titleStream.FlashColour(Color4.White, 500, Easing.OutQuad);
chevron.MoveToX(-20, 100).FadeOut(100);
}
protected override Drawable CreateBackground() => new HeaderBackground();
2019-05-13 16:32:49 +08:00
protected override Drawable CreateContent() => new Container
{
RelativeSizeAxes = Axes.Both,
2018-07-17 05:50:22 +08:00
Children = new Drawable[]
{
new Container
2018-07-18 07:35:06 +08:00
{
Height = title_height,
Anchor = Anchor.BottomLeft,
Origin = Anchor.BottomLeft,
Y = -version_height,
2018-07-17 05:50:22 +08:00
Children = new Drawable[]
{
new CircularContainer
2018-07-17 05:50:22 +08:00
{
2018-07-18 07:35:06 +08:00
X = icon_margin,
Masking = true,
//BorderColour = colours.Violet,
2018-07-18 07:35:06 +08:00
BorderThickness = 3,
MaskingSmoothness = 1,
2018-07-19 01:32:15 +08:00
Size = new Vector2(50),
2018-07-18 00:32:11 +08:00
Children = new Drawable[]
{
new Sprite
2018-07-17 05:50:22 +08:00
{
2018-07-18 07:35:06 +08:00
RelativeSizeAxes = Axes.Both,
//Texture = textures.Get(@"Icons/changelog"),
2018-07-19 01:32:15 +08:00
Size = new Vector2(0.8f),
2018-07-18 07:35:06 +08:00
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
2018-07-17 05:50:22 +08:00
},
2018-07-18 07:35:06 +08:00
new Box
2018-07-17 05:50:22 +08:00
{
2018-07-18 07:35:06 +08:00
RelativeSizeAxes = Axes.Both,
//Colour = colours.Violet,
2018-07-18 07:35:06 +08:00
Alpha = 0,
AlwaysPresent = true,
2019-05-17 10:43:36 +08:00
},
2018-07-18 00:32:11 +08:00
}
},
2018-07-19 01:32:15 +08:00
new FillFlowContainer
2018-07-18 00:32:11 +08:00
{
2018-07-18 07:35:06 +08:00
AutoSizeAxes = Axes.Both,
2018-07-18 00:32:11 +08:00
Direction = FillDirection.Horizontal,
2018-07-18 07:35:06 +08:00
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
X = icon_size + icon_margin * 2,
2018-07-18 00:32:11 +08:00
Children = new Drawable[]
{
2018-07-19 01:32:15 +08:00
new OsuSpriteText
2018-07-18 00:32:11 +08:00
{
2018-07-18 07:35:06 +08:00
Text = "Changelog ",
2019-05-16 17:53:20 +08:00
Font = OsuFont.GetFont(weight: FontWeight.Light, size: 30),
2018-07-17 05:50:22 +08:00
},
2018-07-18 07:35:06 +08:00
titleStream = new OsuSpriteText
{
Text = "Listing",
2019-05-16 17:53:20 +08:00
Font = OsuFont.GetFont(weight: FontWeight.Light, size: 30),
//Colour = colours.Violet,
2018-07-18 07:35:06 +08:00
},
}
}
}
},
2018-07-19 01:32:15 +08:00
new FillFlowContainer // Listing > Lazer 2018.713.1
2018-07-18 07:35:06 +08:00
{
2018-07-25 01:01:24 +08:00
X = 2 * icon_margin + icon_size,
2018-07-18 07:35:06 +08:00
Height = version_height,
Anchor = Anchor.BottomLeft,
Origin = Anchor.BottomLeft,
Direction = FillDirection.Horizontal,
Children = new Drawable[]
{
listing = new BreadcrumbListing( /*colours.Violet*/ Color4.WhiteSmoke)
{
Action = () => ListingSelected?.Invoke()
},
2018-07-19 01:32:15 +08:00
new Container // without a container, moving the chevron wont work
2018-07-18 00:32:11 +08:00
{
2018-07-18 07:35:06 +08:00
Anchor = Anchor.CentreLeft,
2018-07-18 00:32:11 +08:00
Origin = Anchor.CentreLeft,
2018-07-19 01:32:15 +08:00
Margin = new MarginPadding
2018-07-18 07:35:06 +08:00
{
Top = 10,
Left = 15,
2018-07-18 21:17:20 +08:00
Right = 18,
2018-07-18 07:35:06 +08:00
Bottom = 15,
},
Children = new Drawable[]
{
chevron = new SpriteIcon
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Size = new Vector2(7),
// Colour = colours.Violet,
2019-05-12 23:36:05 +08:00
Icon = FontAwesome.Solid.ChevronRight,
2018-07-18 07:35:06 +08:00
Alpha = 0,
X = -200,
},
},
2018-07-18 00:32:11 +08:00
},
releaseStream = new BreadcrumbRelease( /*colours.Violet*/ Color4.WhiteSmoke, "Lazer")
{
Action = () => titleStream.FlashColour(Color4.White, 500, Easing.OutQuad)
}
2018-07-18 07:35:06 +08:00
},
},
new Box
2018-07-18 07:35:06 +08:00
{
//Colour = colours.Violet,
2018-07-18 07:35:06 +08:00
RelativeSizeAxes = Axes.X,
Height = 2,
2018-07-18 07:35:06 +08:00
Anchor = Anchor.BottomLeft,
Origin = Anchor.CentreLeft,
},
}
};
2018-07-17 05:50:22 +08:00
protected override ScreenTitle CreateTitle() => new ChangelogHeaderTitle();
public class HeaderBackground : Sprite
2018-07-17 05:50:22 +08:00
{
public HeaderBackground()
{
RelativeSizeAxes = Axes.Both;
FillMode = FillMode.Fill;
}
[BackgroundDependencyLoader]
private void load(TextureStore textures)
{
Texture = textures.Get(@"Headers/changelog");
}
2018-07-17 05:50:22 +08:00
}
private class ChangelogHeaderTitle : ScreenTitle
2018-07-17 05:50:22 +08:00
{
public ChangelogHeaderTitle()
{
Title = "Changelog";
Section = "Listing";
}
[BackgroundDependencyLoader]
private void load(OsuColour colours)
{
AccentColour = colours.Seafoam;
}
2018-07-17 05:50:22 +08:00
}
}
}