Merge pull request #29182 from bdach/revert-present-score

Force exit to main menu when presenting scores from within playlists / multiplayer
This commit is contained in:
Dean Herbert 2024-07-30 17:24:27 +09:00 committed by GitHub
commit d48849040b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -63,7 +63,6 @@ using osu.Game.Screens;
using osu.Game.Screens.Edit; using osu.Game.Screens.Edit;
using osu.Game.Screens.Footer; using osu.Game.Screens.Footer;
using osu.Game.Screens.Menu; using osu.Game.Screens.Menu;
using osu.Game.Screens.OnlinePlay;
using osu.Game.Screens.OnlinePlay.DailyChallenge; using osu.Game.Screens.OnlinePlay.DailyChallenge;
using osu.Game.Screens.OnlinePlay.Multiplayer; using osu.Game.Screens.OnlinePlay.Multiplayer;
using osu.Game.Screens.Play; using osu.Game.Screens.Play;
@ -757,11 +756,13 @@ namespace osu.Game
// As a special case, if the beatmap and ruleset already match, allow immediately displaying the score from song select. // As a special case, if the beatmap and ruleset already match, allow immediately displaying the score from song select.
// This is guaranteed to not crash, and feels better from a user's perspective (ie. if they are clicking a score in the // This is guaranteed to not crash, and feels better from a user's perspective (ie. if they are clicking a score in the
// song select leaderboard). // song select leaderboard).
// Similar exemptions are made here for online flows where there are good chances that beatmap and ruleset match // Similar exemptions are made here for daily challenge where it is guaranteed that beatmap and ruleset match.
// (playlists / multiplayer / daily challenge). // `OnlinePlayScreen` is excluded because when resuming back to it,
// `RoomSubScreen` changes the global beatmap to the next playlist item on resume,
// which may not match the score, and thus crash.
IEnumerable<Type> validScreens = IEnumerable<Type> validScreens =
Beatmap.Value.BeatmapInfo.Equals(databasedBeatmap) && Ruleset.Value.Equals(databasedScore.ScoreInfo.Ruleset) Beatmap.Value.BeatmapInfo.Equals(databasedBeatmap) && Ruleset.Value.Equals(databasedScore.ScoreInfo.Ruleset)
? new[] { typeof(SongSelect), typeof(OnlinePlayScreen), typeof(DailyChallenge) } ? new[] { typeof(SongSelect), typeof(DailyChallenge) }
: Array.Empty<Type>(); : Array.Empty<Type>();
PerformFromScreen(screen => PerformFromScreen(screen =>