1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 16:13:20 +08:00

Cleanup top header container + user handling

This commit is contained in:
smoogipoo 2019-04-26 12:32:15 +09:00
parent 838325fed4
commit d5b91c6455
4 changed files with 25 additions and 24 deletions

View File

@ -185,10 +185,10 @@ namespace osu.Game.Overlays.Profile.Header
private void updateDisplay(User user) private void updateDisplay(User user)
{ {
followerText.Text = user.FollowerCount?.Length > 0 ? user.FollowerCount[0].ToString("#,##0") : "0"; followerText.Text = user?.FollowerCount?.Length > 0 ? user.FollowerCount[0].ToString("#,##0") : "0";
hiddenDetailGlobal.Content = user.Statistics?.Ranks.Global?.ToString("#,##0") ?? "-"; hiddenDetailGlobal.Content = user?.Statistics?.Ranks.Global?.ToString("#,##0") ?? "-";
hiddenDetailCountry.Content = user.Statistics?.Ranks.Country?.ToString("#,##0") ?? "-"; hiddenDetailCountry.Content = user?.Statistics?.Ranks.Country?.ToString("#,##0") ?? "-";
} }
private class ExpandButton : ProfileHeaderButton private class ExpandButton : ProfileHeaderButton

View File

@ -46,12 +46,12 @@ namespace osu.Game.Overlays.Profile.Header
} }
}; };
User.BindValueChanged(updateLevel); User.BindValueChanged(user => updateLevel(user.NewValue));
} }
private void updateLevel(ValueChangedEvent<User> user) private void updateLevel(User user)
{ {
levelText.Text = user.NewValue?.Statistics?.Level.Current.ToString() ?? "0"; levelText.Text = user?.Statistics?.Level.Current.ToString() ?? "0";
} }
} }
} }

View File

@ -53,13 +53,13 @@ namespace osu.Game.Overlays.Profile.Header
} }
}; };
User.BindValueChanged(updateProgress); User.BindValueChanged(user => updateProgress(user.NewValue));
} }
private void updateProgress(ValueChangedEvent<User> user) private void updateProgress(User user)
{ {
levelProgressBar.Length = user.NewValue?.Statistics?.Level.Progress / 100f ?? 0; levelProgressBar.Length = user?.Statistics?.Level.Progress / 100f ?? 0;
levelProgressText.Text = user.NewValue?.Statistics?.Level.Progress.ToString("0'%'"); levelProgressText.Text = user?.Statistics?.Level.Progress.ToString("0'%'");
} }
} }
} }

View File

@ -17,6 +17,10 @@ namespace osu.Game.Overlays.Profile.Header
{ {
public class TopHeaderContainer : CompositeDrawable public class TopHeaderContainer : CompositeDrawable
{ {
private const float avatar_size = 110;
public readonly Bindable<User> User = new Bindable<User>();
private SupporterIcon supporterTag; private SupporterIcon supporterTag;
private UpdateableAvatar avatar; private UpdateableAvatar avatar;
private OsuSpriteText usernameText; private OsuSpriteText usernameText;
@ -26,15 +30,10 @@ namespace osu.Game.Overlays.Profile.Header
private OsuSpriteText userCountryText; private OsuSpriteText userCountryText;
private FillFlowContainer userStats; private FillFlowContainer userStats;
private const float avatar_size = 110;
public readonly Bindable<User> User = new Bindable<User>();
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(OsuColour colours) private void load(OsuColour colours)
{ {
Height = 150; Height = 150;
User.ValueChanged += e => updateDisplay(e.NewValue);
InternalChildren = new Drawable[] InternalChildren = new Drawable[]
{ {
@ -146,21 +145,23 @@ namespace osu.Game.Overlays.Profile.Header
Spacing = new Vector2(0, 2) Spacing = new Vector2(0, 2)
} }
}; };
User.BindValueChanged(user => updateUser(user.NewValue));
} }
private void updateDisplay(User user) private void updateUser(User user)
{ {
avatar.User = user; avatar.User = user;
usernameText.Text = user.Username; usernameText.Text = user?.Username ?? string.Empty;
openUserExternally.Link = $@"https://osu.ppy.sh/users/{user.Id}"; openUserExternally.Link = $@"https://osu.ppy.sh/users/{user?.Id ?? 0}";
userFlag.Country = user.Country; userFlag.Country = user?.Country;
userCountryText.Text = user.Country?.FullName ?? "Alien"; userCountryText.Text = user?.Country?.FullName ?? "Alien";
supporterTag.SupporterLevel = user.SupportLevel; supporterTag.SupporterLevel = user?.SupportLevel ?? 0;
titleText.Text = user.Title; titleText.Text = user?.Title ?? string.Empty;
titleText.Colour = OsuColour.FromHex(user.Colour ?? "fff"); titleText.Colour = OsuColour.FromHex(user?.Colour ?? "fff");
userStats.Clear(); userStats.Clear();
if (user.Statistics != null) if (user?.Statistics != null)
{ {
userStats.Add(new UserStatsLine("Ranked Score", user.Statistics.RankedScore.ToString("#,##0"))); userStats.Add(new UserStatsLine("Ranked Score", user.Statistics.RankedScore.ToString("#,##0")));
userStats.Add(new UserStatsLine("Hit Accuracy", Math.Round(user.Statistics.Accuracy, 2).ToString("#0.00'%'"))); userStats.Add(new UserStatsLine("Hit Accuracy", Math.Round(user.Statistics.Accuracy, 2).ToString("#0.00'%'")));