Move MainMenu initialisation from ctor to load

This commit is contained in:
Shane Woolcock 2019-02-26 09:54:42 +09:00
parent bebb635ca1
commit e91c07209f

View File

@ -25,7 +25,7 @@ namespace osu.Game.Screens.Menu
{ {
public class MainMenu : OsuScreen public class MainMenu : OsuScreen
{ {
private readonly ButtonSystem buttons; private ButtonSystem buttons;
public override bool HideOverlaysOnEnter => buttons.State == ButtonSystemState.Initial; public override bool HideOverlaysOnEnter => buttons.State == ButtonSystemState.Initial;
@ -35,26 +35,39 @@ namespace osu.Game.Screens.Menu
private Screen songSelect; private Screen songSelect;
private readonly MenuSideFlashes sideFlashes; private MenuSideFlashes sideFlashes;
[Resolved] [Resolved]
private GameHost host { get; set; } private GameHost host { get; set; }
protected override BackgroundScreen CreateBackground() => new BackgroundScreenDefault(); protected override BackgroundScreen CreateBackground() => new BackgroundScreenDefault();
public MainMenu() [BackgroundDependencyLoader(true)]
private void load(OsuGame game = null)
{ {
sideFlashes = new MenuSideFlashes(); if (host.CanExit)
AddInternal(new ExitConfirmOverlay { Action = this.Exit });
buttons = new ButtonSystem AddRangeInternal(new Drawable[]
{ {
OnChart = delegate { this.Push(new ChartListing()); }, new ParallaxContainer
OnDirect = delegate { this.Push(new OnlineListing()); }, {
OnEdit = delegate { this.Push(new Editor()); }, ParallaxAmount = 0.01f,
OnSolo = onSolo, Children = new Drawable[]
OnMulti = delegate { this.Push(new Multiplayer()); }, {
OnExit = this.Exit, buttons = new ButtonSystem
}; {
OnChart = delegate { this.Push(new ChartListing()); },
OnDirect = delegate { this.Push(new OnlineListing()); },
OnEdit = delegate { this.Push(new Editor()); },
OnSolo = onSolo,
OnMulti = delegate { this.Push(new Multiplayer()); },
OnExit = this.Exit,
}
}
},
sideFlashes = new MenuSideFlashes(),
});
buttons.StateChanged += state => buttons.StateChanged += state =>
{ {
@ -69,26 +82,6 @@ namespace osu.Game.Screens.Menu
break; break;
} }
}; };
}
[BackgroundDependencyLoader(true)]
private void load(OsuGame game = null)
{
if (host.CanExit)
{
AddInternal(new ExitConfirmOverlay
{
Action = this.Exit,
});
}
AddInternal(new ParallaxContainer
{
ParallaxAmount = 0.01f,
Child = buttons,
});
AddInternal(sideFlashes);
if (game != null) if (game != null)
{ {