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

Merge pull request #2044 from UselessToucan/PlayerResumeHotfix

Fix pressing escape quickly unexpectedly exiting gameplay
This commit is contained in:
Dean Herbert 2018-02-13 20:51:19 +09:00 committed by GitHub
commit 32d45ccdb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 3 deletions

View File

@ -36,6 +36,7 @@ namespace osu.Game.Screens.Play
public int Retries { set { pauseOverlay.Retries = value; } }
public bool CanPause => (CheckCanPause?.Invoke() ?? true) && Time.Current >= lastPauseActionTime + pause_cooldown;
public bool IsResuming { get; private set; }
public Action OnRetry;
public Action OnQuit;
@ -54,7 +55,11 @@ namespace osu.Game.Screens.Play
AddInternal(pauseOverlay = new PauseOverlay
{
OnResume = () => this.Delay(400).Schedule(Resume),
OnResume = () =>
{
IsResuming = true;
this.Delay(400).Schedule(Resume);
},
OnRetry = () => OnRetry(),
OnQuit = () => OnQuit(),
});
@ -100,6 +105,7 @@ namespace osu.Game.Screens.Play
pauseOverlay.Hide();
AudioClock.Start();
IsResuming = false;
}
private OsuGameBase game;

View File

@ -351,7 +351,7 @@ namespace osu.Game.Screens.Play
protected override bool OnExiting(Screen next)
{
if (!AllowPause || HasFailed || !ValidForResume || pauseContainer?.IsPaused != false || RulesetContainer?.HasReplayLoaded != false)
if ((!AllowPause || HasFailed || !ValidForResume || pauseContainer?.IsPaused != false || RulesetContainer?.HasReplayLoaded != false) && (!pauseContainer?.IsResuming ?? false))
{
// In the case of replays, we may have changed the playback rate.
applyRateFromMods();
@ -362,7 +362,7 @@ namespace osu.Game.Screens.Play
if (loadedSuccessfully)
{
pauseContainer.Pause();
pauseContainer?.Pause();
}
return true;