Centralise track handling

This commit is contained in:
Dean Herbert 2019-10-08 12:03:42 +09:00
parent c3d56088d8
commit 449e53ee6d
3 changed files with 19 additions and 24 deletions

View File

@ -30,19 +30,11 @@ protected override void LogoArriving(OsuLogo logo, bool resuming)
if (!resuming) if (!resuming)
{ {
Beatmap.Value = IntroBeatmap;
IntroBeatmap = null;
Welcome?.Play(); Welcome?.Play();
Scheduler.AddDelayed(delegate Scheduler.AddDelayed(delegate
{ {
// Only start the current track if it is the menu music. A beatmap's track is started when entering the Main Menu. StartTrack();
if (MenuMusic.Value)
{
Track.Restart();
Track = null;
}
PrepareMenuLoad(); PrepareMenuLoad();
@ -57,8 +49,6 @@ protected override void LogoArriving(OsuLogo logo, bool resuming)
public override void OnSuspending(IScreen next) public override void OnSuspending(IScreen next)
{ {
Track = null;
this.FadeOut(300); this.FadeOut(300);
base.OnSuspending(next); base.OnSuspending(next);
} }

View File

@ -47,7 +47,7 @@ public abstract class IntroScreen : StartupScreen
protected Bindable<bool> MenuMusic; protected Bindable<bool> MenuMusic;
protected Track Track; protected Track Track { get; private set; }
protected WorkingBeatmap IntroBeatmap; protected WorkingBeatmap IntroBeatmap;
@ -57,6 +57,13 @@ public abstract class IntroScreen : StartupScreen
protected override BackgroundScreen CreateBackground() => new BackgroundScreenBlack(); protected override BackgroundScreen CreateBackground() => new BackgroundScreenBlack();
protected void StartTrack()
{
// Only start the current track if it is the menu music. A beatmap's track is started when entering the Main Menu.
if (MenuMusic.Value)
Track.Restart();
}
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(OsuConfigManager config, SkinManager skinManager, BeatmapManager beatmaps, Framework.Game game) private void load(OsuConfigManager config, SkinManager skinManager, BeatmapManager beatmaps, Framework.Game game)
{ {
@ -136,6 +143,9 @@ protected override void LogoArriving(OsuLogo logo, bool resuming)
if (!resuming) if (!resuming)
{ {
Beatmap.Value = IntroBeatmap;
IntroBeatmap = null;
logo.MoveTo(new Vector2(0.5f)); logo.MoveTo(new Vector2(0.5f));
logo.ScaleTo(Vector2.One); logo.ScaleTo(Vector2.One);
logo.Hide(); logo.Hide();
@ -156,6 +166,12 @@ protected override void LogoArriving(OsuLogo logo, bool resuming)
} }
} }
public override void OnSuspending(IScreen next)
{
base.OnSuspending(next);
Track = null;
}
private MainMenu mainMenu; private MainMenu mainMenu;
protected void PrepareMenuLoad() protected void PrepareMenuLoad()

View File

@ -55,9 +55,6 @@ protected override void LogoArriving(OsuLogo logo, bool resuming)
if (!resuming) if (!resuming)
{ {
Beatmap.Value = IntroBeatmap;
IntroBeatmap = null;
PrepareMenuLoad(); PrepareMenuLoad();
LoadComponentAsync(new TrianglesIntroSequence(logo, background) LoadComponentAsync(new TrianglesIntroSequence(logo, background)
@ -70,9 +67,7 @@ protected override void LogoArriving(OsuLogo logo, bool resuming)
AddInternal(t); AddInternal(t);
Welcome?.Play(); Welcome?.Play();
// Only start the current track if it is the menu music. A beatmap's track is started when entering the Main Menu. StartTrack();
if (MenuMusic.Value)
Track.Start();
}); });
} }
} }
@ -83,12 +78,6 @@ public override void OnResuming(IScreen last)
background.FadeOut(100); background.FadeOut(100);
} }
public override void OnSuspending(IScreen next)
{
Track = null;
base.OnSuspending(next);
}
private class TrianglesIntroSequence : CompositeDrawable private class TrianglesIntroSequence : CompositeDrawable
{ {
private readonly OsuLogo logo; private readonly OsuLogo logo;