1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-12 21:52:55 +08:00

Remove necessity of using CurrentModeRank as a fallback

This commit is contained in:
Salman Ahmed 2021-02-09 08:28:09 +03:00
parent 90aa6256d7
commit a1496cd8f3
3 changed files with 14 additions and 9 deletions

View File

@ -155,7 +155,10 @@ namespace osu.Game.Tests.Visual.Multiplayer
{ {
Id = i, Id = i,
Username = $"User {i}", Username = $"User {i}",
CurrentModeRank = RNG.Next(1, 100000), AllStatistics =
{
{ Ruleset.Value, new UserStatistics { GlobalRank = RNG.Next(1, 100000) } }
},
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg", CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg",
}); });
@ -193,7 +196,10 @@ namespace osu.Game.Tests.Visual.Multiplayer
{ {
Id = 0, Id = 0,
Username = "User 0", Username = "User 0",
CurrentModeRank = RNG.Next(1, 100000), AllStatistics =
{
{ Ruleset.Value, new UserStatistics { GlobalRank = RNG.Next(1, 100000) } }
},
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg", CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg",
}); });

View File

@ -165,10 +165,6 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Participants
var ruleset = rulesets.GetRuleset(Room.Settings.RulesetID); var ruleset = rulesets.GetRuleset(Room.Settings.RulesetID);
var currentModeRank = User.User?.GetStatisticsFor(ruleset)?.GlobalRank; var currentModeRank = User.User?.GetStatisticsFor(ruleset)?.GlobalRank;
// fallback to current mode rank for testing purposes.
currentModeRank ??= User.User?.CurrentModeRank;
userRankText.Text = currentModeRank != null ? $"#{currentModeRank.Value:N0}" : string.Empty; userRankText.Text = currentModeRank != null ? $"#{currentModeRank.Value:N0}" : string.Empty;
userStateDisplay.UpdateStatus(User.State, User.BeatmapAvailability); userStateDisplay.UpdateStatus(User.State, User.BeatmapAvailability);

View File

@ -243,7 +243,10 @@ namespace osu.Game.Users
[JsonExtensionData] [JsonExtensionData]
private readonly IDictionary<string, JToken> otherProperties = new Dictionary<string, JToken>(); private readonly IDictionary<string, JToken> otherProperties = new Dictionary<string, JToken>();
private readonly Dictionary<RulesetInfo, UserStatistics> statisticsCache = new Dictionary<RulesetInfo, UserStatistics>(); /// <summary>
/// Map for ruleset with their associated user statistics, can be altered for testing purposes.
/// </summary>
internal readonly Dictionary<RulesetInfo, UserStatistics> AllStatistics = new Dictionary<RulesetInfo, UserStatistics>();
/// <summary> /// <summary>
/// Retrieves the user statistics for a certain ruleset. /// Retrieves the user statistics for a certain ruleset.
@ -254,10 +257,10 @@ namespace osu.Game.Users
// todo: this should likely be moved to a separate UserCompact class at some point. // todo: this should likely be moved to a separate UserCompact class at some point.
public UserStatistics GetStatisticsFor(RulesetInfo ruleset) public UserStatistics GetStatisticsFor(RulesetInfo ruleset)
{ {
if (statisticsCache.TryGetValue(ruleset, out var existing)) if (AllStatistics.TryGetValue(ruleset, out var existing))
return existing; return existing;
return statisticsCache[ruleset] = parseStatisticsFor(ruleset); return AllStatistics[ruleset] = parseStatisticsFor(ruleset);
} }
private UserStatistics parseStatisticsFor(RulesetInfo ruleset) private UserStatistics parseStatisticsFor(RulesetInfo ruleset)