1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-05 03:03:21 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
Salman Alshamrani
0821356f79
Merge 53dce83b56 into be05f2a1c2 2024-12-03 16:31:15 +09:00
Salman Alshamrani
53dce83b56 Fix restarting no longer working from results screen
Thanks to tests for pointing that out :blobsweat:
2024-12-01 02:13:20 -05:00
Salman Alshamrani
9140893249 Fix score no longer being saved when quick-restarting after pass 2024-11-30 23:36:02 -05:00
3 changed files with 13 additions and 9 deletions

View File

@ -21,7 +21,7 @@ namespace osu.Game.Tests.Visual.Mods
protected override TestPlayer CreateModPlayer(Ruleset ruleset)
{
var player = base.CreateModPlayer(ruleset);
player.RestartRequested = _ => restartRequested = true;
player.PrepareLoaderForRestart = _ => restartRequested = true;
return player;
}

View File

@ -83,7 +83,7 @@ namespace osu.Game.Screens.Play
/// </summary>
protected virtual bool PauseOnFocusLost => true;
public Action<bool> RestartRequested;
public Action<bool> PrepareLoaderForRestart;
private bool isRestarting;
private bool skipExitTransition;
@ -719,10 +719,16 @@ namespace osu.Game.Screens.Play
// stopping here is to ensure music doesn't become audible after exiting back to PlayerLoader.
musicController.Stop();
if (RestartRequested != null)
skipExitTransition = quickRestart;
PrepareLoaderForRestart?.Invoke(quickRestart);
if (!this.IsCurrentScreen())
{
skipExitTransition = quickRestart;
RestartRequested?.Invoke(quickRestart);
// if we're called externally (i.e. from results screen),
// use MakeCurrent to exit results screen as well as this player screen
// since ValidForResume = false in here
Debug.Assert(!ValidForResume);
this.MakeCurrent();
return true;
}

View File

@ -457,7 +457,7 @@ namespace osu.Game.Screens.Play
CurrentPlayer = createPlayer();
CurrentPlayer.Configuration.AutomaticallySkipIntro |= quickRestart;
CurrentPlayer.RestartCount = restartCount++;
CurrentPlayer.RestartRequested = restartRequested;
CurrentPlayer.PrepareLoaderForRestart = prepareForRestart;
LoadTask = LoadComponentAsync(CurrentPlayer, _ =>
{
@ -470,13 +470,11 @@ namespace osu.Game.Screens.Play
{
}
private void restartRequested(bool quickRestartRequested)
private void prepareForRestart(bool quickRestartRequested)
{
quickRestart = quickRestartRequested;
hideOverlays = true;
ValidForResume = true;
this.MakeCurrent();
}
private void contentIn(double delayBeforeSideDisplays = 0)