Tidy up and comment PlayerLoader logic.

This commit is contained in:
Dean Herbert 2017-04-18 16:56:01 +09:00
parent 2ccb8b154f
commit edd71c0560
No known key found for this signature in database
GPG Key ID: 46D71BF4958ABB49
2 changed files with 16 additions and 17 deletions

View File

@ -35,7 +35,7 @@ namespace osu.Game.Screens.Play
public BeatmapInfo BeatmapInfo; public BeatmapInfo BeatmapInfo;
public Action OnRestart; public Action RestartRequested;
public bool IsPaused => !interpolatedSourceClock.IsRunning; public bool IsPaused => !interpolatedSourceClock.IsRunning;
@ -249,7 +249,7 @@ namespace osu.Game.Screens.Play
public void Restart() public void Restart()
{ {
ValidForResume = false; ValidForResume = false;
OnRestart?.Invoke(); RestartRequested?.Invoke();
Exit(); Exit();
} }

View File

@ -31,11 +31,16 @@ namespace osu.Game.Screens.Play
public PlayerLoader(Player player) public PlayerLoader(Player player)
{ {
this.player = player;
//By default, we want to load the player and never be returned to.
//Note that this may change if the player we load requested a re-run.
ValidForResume = false; ValidForResume = false;
player.OnRestart = restart; player.RestartRequested = () => {
showOverlays = false;
this.player = player; ValidForResume = true;
};
Children = new Drawable[] Children = new Drawable[]
{ {
@ -45,7 +50,6 @@ namespace osu.Game.Screens.Play
Interactive = false, Interactive = false,
}, },
}; };
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
@ -64,13 +68,14 @@ namespace osu.Game.Screens.Play
protected override void OnResuming(Screen last) protected override void OnResuming(Screen last)
{ {
base.OnResuming(last); base.OnResuming(last);
if (last != player) return;
player = new Player //we will only be resumed if the player has requested a re-run (see ValidForResume setting above)
LoadComponentAsync(player = new Player
{ {
RestartCount = player.RestartCount + 1, RestartCount = player.RestartCount + 1,
OnRestart = restart RestartRequested = player.RestartRequested,
}; Beatmap = player.Beatmap,
LoadComponentAsync(player, delegate }, p =>
{ {
if (!Push(player)) if (!Push(player))
Exit(); Exit();
@ -78,12 +83,6 @@ namespace osu.Game.Screens.Play
}); });
} }
private void restart()
{
showOverlays = false;
ValidForResume = true;
}
protected override void OnEntering(Screen last) protected override void OnEntering(Screen last)
{ {
base.OnEntering(last); base.OnEntering(last);