1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-20 15:12:55 +08:00
osu-lazer/osu.Game/Screens/Ranking/Statistics/User/OverallRanking.cs
2022-12-24 10:44:38 +01:00

79 lines
2.8 KiB
C#

// 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.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics.UserInterface;
using osu.Game.Online.Solo;
using osuTK;
namespace osu.Game.Screens.Ranking.Statistics.User
{
public partial class OverallRanking : CompositeDrawable
{
private const float transition_duration = 300;
public Bindable<SoloStatisticsUpdate?> StatisticsUpdate { get; } = new Bindable<SoloStatisticsUpdate?>();
private LoadingLayer loadingLayer = null!;
private FillFlowContainer content = null!;
[BackgroundDependencyLoader]
private void load()
{
AutoSizeAxes = Axes.Y;
AutoSizeEasing = Easing.OutQuint;
AutoSizeDuration = transition_duration;
InternalChildren = new Drawable[]
{
loadingLayer = new LoadingLayer(withBox: false)
{
RelativeSizeAxes = Axes.Both,
},
content = new FillFlowContainer
{
AlwaysPresent = true,
RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Direction = FillDirection.Vertical,
Spacing = new Vector2(10),
Children = new Drawable[]
{
new GlobalRankChangeRow { StatisticsUpdate = { BindTarget = StatisticsUpdate } },
new AccuracyChangeRow { StatisticsUpdate = { BindTarget = StatisticsUpdate } },
new MaximumComboChangeRow { StatisticsUpdate = { BindTarget = StatisticsUpdate } },
new RankedScoreChangeRow { StatisticsUpdate = { BindTarget = StatisticsUpdate } },
new TotalScoreChangeRow { StatisticsUpdate = { BindTarget = StatisticsUpdate } },
new PerformancePointsChangeRow { StatisticsUpdate = { BindTarget = StatisticsUpdate } }
}
}
};
}
protected override void LoadComplete()
{
base.LoadComplete();
StatisticsUpdate.BindValueChanged(onUpdateReceived, true);
FinishTransforms(true);
}
private void onUpdateReceived(ValueChangedEvent<SoloStatisticsUpdate?> update)
{
if (update.NewValue == null)
{
loadingLayer.Show();
content.FadeOut(transition_duration, Easing.OutQuint);
}
else
{
loadingLayer.Hide();
content.FadeIn(transition_duration, Easing.OutQuint);
}
}
}
}