Move leaderboard update scheduling to a more central method

This commit is contained in:
Dean Herbert
2018-06-26 16:33:22 +09:00
parent b0a1b25983
commit 388ca5d572

View File

@ -175,7 +175,7 @@ namespace osu.Game.Screens.Select.Leaderboards
private APIAccess api; private APIAccess api;
private BeatmapInfo beatmap; private BeatmapInfo beatmap;
private ScheduledDelegate pendingBeatmapSwitch; private ScheduledDelegate pendingUpdateScores;
public BeatmapInfo Beatmap public BeatmapInfo Beatmap
{ {
@ -188,8 +188,7 @@ namespace osu.Game.Screens.Select.Leaderboards
beatmap = value; beatmap = value;
Scores = null; Scores = null;
pendingBeatmapSwitch?.Cancel(); updateScores();
pendingBeatmapSwitch = Schedule(updateScores);
} }
} }
@ -228,6 +227,12 @@ namespace osu.Game.Screens.Select.Leaderboards
} }
private void updateScores() private void updateScores()
{
getScoresRequest?.Cancel();
getScoresRequest = null;
pendingUpdateScores?.Cancel();
pendingUpdateScores = Schedule(() =>
{ {
if (Scope == LeaderboardScope.Local) if (Scope == LeaderboardScope.Local)
{ {
@ -257,7 +262,7 @@ namespace osu.Game.Screens.Select.Leaderboards
PlaceholderState = PlaceholderState.Retrieving; PlaceholderState = PlaceholderState.Retrieving;
loading.Show(); loading.Show();
getScoresRequest = new GetScoresRequest(Beatmap, osuGame?.Ruleset.Value ?? Beatmap.Ruleset, Scope); getScoresRequest = new GetScoresRequest(Beatmap, ruleset.Value ?? Beatmap.Ruleset, Scope);
getScoresRequest.Success += r => Schedule(() => getScoresRequest.Success += r => Schedule(() =>
{ {
Scores = r.Scores; Scores = r.Scores;
@ -274,6 +279,7 @@ namespace osu.Game.Screens.Select.Leaderboards
}); });
api.Queue(getScoresRequest); api.Queue(getScoresRequest);
});
} }
private Placeholder currentPlaceholder; private Placeholder currentPlaceholder;