1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-22 01:23:24 +08:00

Update tooltip implementation

This commit is contained in:
Dean Herbert 2019-08-16 19:47:35 +09:00
parent 536e7d8757
commit 132d51a2cc

View File

@ -196,17 +196,30 @@ namespace osu.Game.Overlays.Profile.Header.Components
} }
} }
public string TooltipText => Statistics.Value?.Ranks.Global == null ? "" : $"#{ranks[dayIndex].Value:#,##0}|{ranked_days - ranks[dayIndex].Key + 1}"; public object TooltipContent
{
get
{
if (Statistics.Value?.Ranks.Global == null)
return null;
var days = ranked_days - ranks[dayIndex].Key + 1;
return new TooltipDisplayContent
{
Rank = $"#{ranks[dayIndex].Value:#,##0}",
Time = days == 0 ? "now" : $"{days} days ago"
};
}
}
public ITooltip GetCustomTooltip() => new RankGraphTooltip(); public ITooltip GetCustomTooltip() => new RankGraphTooltip();
public class RankGraphTooltip : VisibilityContainer, ITooltip private class RankGraphTooltip : VisibilityContainer, ITooltip
{ {
private readonly OsuSpriteText globalRankingText, timeText; private readonly OsuSpriteText globalRankingText, timeText;
private readonly Box background; private readonly Box background;
public string TooltipText { get; set; }
public RankGraphTooltip() public RankGraphTooltip()
{ {
AutoSizeAxes = Axes.Both; AutoSizeAxes = Axes.Both;
@ -260,11 +273,14 @@ namespace osu.Game.Overlays.Profile.Header.Components
background.Colour = colours.GreySeafoamDark; background.Colour = colours.GreySeafoamDark;
} }
public void Refresh() public bool SetContent(object content)
{ {
var info = TooltipText.Split('|'); if (!(content is TooltipDisplayContent info))
globalRankingText.Text = info[0]; return false;
timeText.Text = info[1] == "0" ? "now" : $"{info[1]} days ago";
globalRankingText.Text = info.Rank;
timeText.Text = info.Time;
return true;
} }
private bool instantMove = true; private bool instantMove = true;
@ -280,9 +296,24 @@ namespace osu.Game.Overlays.Profile.Header.Components
this.MoveTo(pos, 200, Easing.OutQuint); this.MoveTo(pos, 200, Easing.OutQuint);
} }
public void Refresh()
{
}
public string TooltipText
{
set => throw new InvalidOperationException();
}
protected override void PopIn() => this.FadeIn(200, Easing.OutQuint); protected override void PopIn() => this.FadeIn(200, Easing.OutQuint);
protected override void PopOut() => this.FadeOut(200, Easing.OutQuint); protected override void PopOut() => this.FadeOut(200, Easing.OutQuint);
} }
private class TooltipDisplayContent
{
public string Rank;
public string Time;
}
} }
} }