mirror of
https://github.com/osukey/osukey.git
synced 2025-05-30 01:47:30 +09:00
Modify flow to avoid weird bindable and value resetting
This commit is contained in:
parent
c9baadcf88
commit
6761f869f9
@ -23,7 +23,7 @@ namespace osu.Game.Tests.Visual.Mods
|
|||||||
protected override TestPlayer CreateModPlayer(Ruleset ruleset)
|
protected override TestPlayer CreateModPlayer(Ruleset ruleset)
|
||||||
{
|
{
|
||||||
var player = base.CreateModPlayer(ruleset);
|
var player = base.CreateModPlayer(ruleset);
|
||||||
player.RestartRequested = () => restartRequested = true;
|
player.RestartRequested = _ => restartRequested = true;
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,15 +77,10 @@ namespace osu.Game.Screens.Play
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
protected virtual bool PauseOnFocusLost => true;
|
protected virtual bool PauseOnFocusLost => true;
|
||||||
|
|
||||||
public Action RestartRequested;
|
public Action<bool> RestartRequested;
|
||||||
|
|
||||||
private bool isRestarting;
|
private bool isRestarting;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Is set to true when the quick retry hotkey has been pressed.
|
|
||||||
/// </summary>
|
|
||||||
public Bindable<bool> IsQuickRestart = new Bindable<bool>();
|
|
||||||
|
|
||||||
private Bindable<bool> mouseWheelDisabled;
|
private Bindable<bool> mouseWheelDisabled;
|
||||||
|
|
||||||
private readonly Bindable<bool> storyboardReplacesBackground = new Bindable<bool>();
|
private readonly Bindable<bool> storyboardReplacesBackground = new Bindable<bool>();
|
||||||
@ -272,7 +267,7 @@ namespace osu.Game.Screens.Play
|
|||||||
FailOverlay = new FailOverlay
|
FailOverlay = new FailOverlay
|
||||||
{
|
{
|
||||||
SaveReplay = prepareAndImportScore,
|
SaveReplay = prepareAndImportScore,
|
||||||
OnRetry = Restart,
|
OnRetry = () => Restart(),
|
||||||
OnQuit = () => PerformExit(true),
|
OnQuit = () => PerformExit(true),
|
||||||
},
|
},
|
||||||
new HotkeyExitOverlay
|
new HotkeyExitOverlay
|
||||||
@ -298,9 +293,8 @@ namespace osu.Game.Screens.Play
|
|||||||
{
|
{
|
||||||
if (!this.IsCurrentScreen()) return;
|
if (!this.IsCurrentScreen()) return;
|
||||||
|
|
||||||
IsQuickRestart.Value = true;
|
|
||||||
fadeOut(true);
|
fadeOut(true);
|
||||||
Restart();
|
Restart(true);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -453,7 +447,7 @@ namespace osu.Game.Screens.Play
|
|||||||
{
|
{
|
||||||
OnResume = Resume,
|
OnResume = Resume,
|
||||||
Retries = RestartCount,
|
Retries = RestartCount,
|
||||||
OnRetry = Restart,
|
OnRetry = () => Restart(),
|
||||||
OnQuit = () => PerformExit(true),
|
OnQuit = () => PerformExit(true),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -660,7 +654,8 @@ namespace osu.Game.Screens.Play
|
|||||||
/// Restart gameplay via a parent <see cref="PlayerLoader"/>.
|
/// Restart gameplay via a parent <see cref="PlayerLoader"/>.
|
||||||
/// <remarks>This can be called from a child screen in order to trigger the restart process.</remarks>
|
/// <remarks>This can be called from a child screen in order to trigger the restart process.</remarks>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Restart()
|
/// <param name="quickRestart">Whether a quick restart was requested (skipping intro etc.).</param>
|
||||||
|
public void Restart(bool quickRestart = false)
|
||||||
{
|
{
|
||||||
if (!Configuration.AllowRestart)
|
if (!Configuration.AllowRestart)
|
||||||
return;
|
return;
|
||||||
@ -672,7 +667,7 @@ namespace osu.Game.Screens.Play
|
|||||||
musicController.Stop();
|
musicController.Stop();
|
||||||
|
|
||||||
sampleRestart?.Play();
|
sampleRestart?.Play();
|
||||||
RestartRequested?.Invoke();
|
RestartRequested?.Invoke(quickRestart);
|
||||||
|
|
||||||
PerformExit(false);
|
PerformExit(false);
|
||||||
}
|
}
|
||||||
@ -852,7 +847,7 @@ namespace osu.Game.Screens.Play
|
|||||||
failAnimationLayer.Start();
|
failAnimationLayer.Start();
|
||||||
|
|
||||||
if (GameplayState.Mods.OfType<IApplicableFailOverride>().Any(m => m.RestartOnFail))
|
if (GameplayState.Mods.OfType<IApplicableFailOverride>().Any(m => m.RestartOnFail))
|
||||||
Restart();
|
Restart(true);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
private EpilepsyWarning? epilepsyWarning;
|
private EpilepsyWarning? epilepsyWarning;
|
||||||
|
|
||||||
private bool isHotKeyRestart;
|
private bool quickRestart;
|
||||||
|
|
||||||
[Resolved(CanBeNull = true)]
|
[Resolved(CanBeNull = true)]
|
||||||
private INotificationOverlay? notificationOverlay { get; set; }
|
private INotificationOverlay? notificationOverlay { get; set; }
|
||||||
@ -363,17 +363,12 @@ namespace osu.Game.Screens.Play
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
CurrentPlayer = createPlayer();
|
CurrentPlayer = createPlayer();
|
||||||
|
CurrentPlayer.Configuration.AutomaticallySkipIntro = quickRestart;
|
||||||
CurrentPlayer.RestartCount = restartCount++;
|
CurrentPlayer.RestartCount = restartCount++;
|
||||||
CurrentPlayer.RestartRequested = restartRequested;
|
CurrentPlayer.RestartRequested = restartRequested;
|
||||||
|
|
||||||
LoadTask = LoadComponentAsync(CurrentPlayer, _ =>
|
LoadTask = LoadComponentAsync(CurrentPlayer, _ =>
|
||||||
{
|
{
|
||||||
if (isHotKeyRestart)
|
|
||||||
{
|
|
||||||
CurrentPlayer.Configuration.AutomaticallySkipIntro = true;
|
|
||||||
isHotKeyRestart = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
MetadataInfo.Loading = false;
|
MetadataInfo.Loading = false;
|
||||||
OnPlayerLoaded();
|
OnPlayerLoaded();
|
||||||
});
|
});
|
||||||
@ -383,11 +378,9 @@ namespace osu.Game.Screens.Play
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restartRequested()
|
private void restartRequested(bool quickRestartRequested)
|
||||||
{
|
{
|
||||||
if (CurrentPlayer != null)
|
quickRestart = quickRestartRequested;
|
||||||
isHotKeyRestart = CurrentPlayer.IsQuickRestart.Value;
|
|
||||||
|
|
||||||
hideOverlays = true;
|
hideOverlays = true;
|
||||||
ValidForResume = true;
|
ValidForResume = true;
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ namespace osu.Game.Screens.Ranking
|
|||||||
{
|
{
|
||||||
if (!this.IsCurrentScreen()) return;
|
if (!this.IsCurrentScreen()) return;
|
||||||
|
|
||||||
player?.Restart();
|
player?.Restart(true);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user