1
0
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:
Dean Herbert
2025-08-02 02:05:47 +09:00
committed by GitHub
Unverified
4 changed files with 19 additions and 11 deletions
@@ -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:
+2
View File
@@ -594,6 +594,8 @@ namespace osu.Game.Screens.SelectV2
ensureGlobalBeatmapValid();
detailsArea.Refresh();
if (ControlGlobalMusic)
{
// restart playback on returning to song select, regardless.