mirror of
https://github.com/ppy/osu.git
synced 2026-05-18 05:39:53 +08:00
Merge pull request #34450 from bdach/fix-song-select-dropping-sort-mode
Ensure scores are re-fetched with correct criteria on re-entering song select
This commit is contained in:
@@ -41,12 +41,12 @@ namespace osu.Game.Screens.Ranking
|
||||
{
|
||||
Debug.Assert(Score != null);
|
||||
|
||||
// sort mode intentionally omitted to default to score - results screen only supports sorting by score, so don't pass any other to avoid confusion
|
||||
var criteria = new LeaderboardCriteria(
|
||||
Score.BeatmapInfo!,
|
||||
Score.Ruleset,
|
||||
leaderboardManager.CurrentCriteria?.Scope ?? BeatmapLeaderboardScope.Global,
|
||||
leaderboardManager.CurrentCriteria?.ExactMods,
|
||||
leaderboardManager.CurrentCriteria?.Sorting ?? LeaderboardSortMode.Score
|
||||
leaderboardManager.CurrentCriteria?.ExactMods
|
||||
);
|
||||
var requestTaskSource = new TaskCompletionSource<LeaderboardScores>();
|
||||
globalScores.BindValueChanged(_ =>
|
||||
|
||||
@@ -97,5 +97,11 @@ namespace osu.Game.Screens.SelectV2
|
||||
contentContainer.Add(currentContent);
|
||||
currentContent.Show();
|
||||
}
|
||||
|
||||
public void Refresh()
|
||||
{
|
||||
if (currentContent is BeatmapLeaderboardWedge leaderboardWedge)
|
||||
leaderboardWedge.RefetchScores();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,14 +189,14 @@ namespace osu.Game.Screens.SelectV2
|
||||
{
|
||||
base.LoadComplete();
|
||||
|
||||
Scope.BindValueChanged(_ => refetchScores());
|
||||
Sorting.BindValueChanged(_ => refetchScores());
|
||||
FilterBySelectedMods.BindValueChanged(_ => refetchScores());
|
||||
beatmap.BindValueChanged(_ => refetchScores());
|
||||
ruleset.BindValueChanged(_ => refetchScores());
|
||||
Scope.BindValueChanged(_ => RefetchScores());
|
||||
Sorting.BindValueChanged(_ => RefetchScores());
|
||||
FilterBySelectedMods.BindValueChanged(_ => RefetchScores());
|
||||
beatmap.BindValueChanged(_ => RefetchScores());
|
||||
ruleset.BindValueChanged(_ => RefetchScores());
|
||||
mods.BindValueChanged(_ => refetchScoresFromMods());
|
||||
|
||||
refetchScores();
|
||||
RefetchScores();
|
||||
}
|
||||
|
||||
protected override void PopIn()
|
||||
@@ -212,14 +212,14 @@ namespace osu.Game.Screens.SelectV2
|
||||
private void refetchScoresFromMods()
|
||||
{
|
||||
if (FilterBySelectedMods.Value)
|
||||
refetchScores();
|
||||
RefetchScores();
|
||||
}
|
||||
|
||||
private bool initialFetchComplete;
|
||||
|
||||
private ScheduledDelegate? refetchOperation;
|
||||
|
||||
private void refetchScores()
|
||||
public void RefetchScores()
|
||||
{
|
||||
SetScores(Array.Empty<ScoreInfo>());
|
||||
|
||||
@@ -477,7 +477,7 @@ namespace osu.Game.Screens.SelectV2
|
||||
case LeaderboardState.NetworkFailure:
|
||||
return new ClickablePlaceholder(LeaderboardStrings.CouldntFetchScores, FontAwesome.Solid.Sync)
|
||||
{
|
||||
Action = refetchScores
|
||||
Action = RefetchScores
|
||||
};
|
||||
|
||||
case LeaderboardState.NoneSelected:
|
||||
|
||||
@@ -594,6 +594,8 @@ namespace osu.Game.Screens.SelectV2
|
||||
|
||||
ensureGlobalBeatmapValid();
|
||||
|
||||
detailsArea.Refresh();
|
||||
|
||||
if (ControlGlobalMusic)
|
||||
{
|
||||
// restart playback on returning to song select, regardless.
|
||||
|
||||
Reference in New Issue
Block a user