Update Scoreboard Refresh Method for deleting individual scores

This commit is contained in:
Willy Tu
2019-12-18 19:22:42 -08:00
parent d1fcadc700
commit 531ac16743
4 changed files with 90 additions and 27 deletions

View File

@ -19,8 +19,10 @@ namespace osu.Game.Screens.Select.Leaderboards
{
public class BeatmapLeaderboard : Leaderboard<BeatmapLeaderboardScope, ScoreInfo>
{
public Action<ScoreInfo> ScoreSelected;
[Resolved]
private RulesetStore rulesets { get; set; }
@ -103,6 +105,8 @@ namespace osu.Game.Screens.Select.Leaderboards
{
ScoreSelected = s => ScoreSelected?.Invoke(s)
});
scoreManager.ItemRemoved += deleteLocalScore;
}
protected override void Reset()
@ -111,6 +115,16 @@ namespace osu.Game.Screens.Select.Leaderboards
TopScore = null;
}
protected override void Dispose(bool isDisposing)
{
base.Dispose(isDisposing);
if (scoreManager != null)
{
scoreManager.ItemRemoved -= deleteLocalScore;
}
}
protected override bool IsOnlineScope => Scope != BeatmapLeaderboardScope.Local;
protected override APIRequest FetchScores(Action<IEnumerable<ScoreInfo>> scoresCallback)
@ -188,9 +202,16 @@ namespace osu.Game.Screens.Select.Leaderboards
return new LeaderboardScore(model, index, IsOnlineScope)
{
Action = () => ScoreSelected?.Invoke(model),
RefreshAction = () => this.RefreshScores()
Action = () => ScoreSelected?.Invoke(model)
};
}
private void deleteLocalScore(ScoreInfo score)
{
if (score == null)
return;
Schedule(() => this.RefreshScores());
}
}
}