1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 14:07:25 +08:00

Implement NoScoresPlaceholder

This commit is contained in:
Andrei Zavatski 2019-11-13 16:39:33 +03:00
parent 2dbee5da79
commit 4e90daf212
2 changed files with 63 additions and 0 deletions

View File

@ -0,0 +1,50 @@
// 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.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics;
using osu.Framework.Bindables;
using osu.Game.Screens.Select.Leaderboards;
using osu.Framework.Graphics.Sprites;
namespace osu.Game.Overlays.BeatmapSet.Scores
{
public class NoScoresPlaceholder : Container
{
public readonly Bindable<BeatmapLeaderboardScope> Scope = new Bindable<BeatmapLeaderboardScope>();
private readonly SpriteText text;
public NoScoresPlaceholder()
{
AutoSizeAxes = Axes.Both;
Child = text = new SpriteText
{
Font = OsuFont.GetFont(),
};
}
protected override void LoadComplete()
{
base.LoadComplete();
Scope.BindValueChanged(scope => text.Text = getText(scope.NewValue), true);
}
private string getText(BeatmapLeaderboardScope scope)
{
switch (scope)
{
default:
case BeatmapLeaderboardScope.Global:
return @"No scores yet. Maybe should try setting some?";
case BeatmapLeaderboardScope.Friend:
return @"None of your friends has set a score on this map yet!";
case BeatmapLeaderboardScope.Country:
return @"No one from your country has set a score on this map yet!";
}
}
}
}

View File

@ -35,6 +35,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores
private readonly LoadingAnimation loadingAnimation; private readonly LoadingAnimation loadingAnimation;
private readonly FillFlowContainer modFilter; private readonly FillFlowContainer modFilter;
private readonly LeaderboardModSelector modSelector; private readonly LeaderboardModSelector modSelector;
private readonly NoScoresPlaceholder noScoresPlaceholder;
[Resolved] [Resolved]
private IAPIProvider api { get; set; } private IAPIProvider api { get; set; }
@ -125,6 +126,13 @@ namespace osu.Game.Overlays.BeatmapSet.Scores
Spacing = new Vector2(0, spacing), Spacing = new Vector2(0, spacing),
Children = new Drawable[] Children = new Drawable[]
{ {
noScoresPlaceholder = new NoScoresPlaceholder
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
Alpha = 0,
Scope = { BindTarget = scope }
},
topScoresContainer = new FillFlowContainer topScoresContainer = new FillFlowContainer
{ {
RelativeSizeAxes = Axes.X, RelativeSizeAxes = Axes.X,
@ -204,6 +212,8 @@ namespace osu.Game.Overlays.BeatmapSet.Scores
Scores = null; Scores = null;
noScoresPlaceholder.Hide();
updateModFilterVisibility(); updateModFilterVisibility();
if (hasNoLeaderboard) if (hasNoLeaderboard)
@ -215,6 +225,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores
{ {
loadingAnimation.Hide(); loadingAnimation.Hide();
Scores = scores; Scores = scores;
if (!scores.Scores.Any())
noScoresPlaceholder.Show();
}; };
api.Queue(getScoresRequest); api.Queue(getScoresRequest);
} }