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
{
private readonly ButtonSystem buttons;
private ButtonSystem buttons;
public override bool HideOverlaysOnEnter => buttons.State == ButtonSystemState.Initial;
@ -35,26 +35,39 @@ namespace osu.Game.Screens.Menu
private Screen songSelect;
private readonly MenuSideFlashes sideFlashes;
private MenuSideFlashes sideFlashes;
[Resolved]
private GameHost host { get; set; }
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()); },
OnDirect = delegate { this.Push(new OnlineListing()); },
OnEdit = delegate { this.Push(new Editor()); },
OnSolo = onSolo,
OnMulti = delegate { this.Push(new Multiplayer()); },
OnExit = this.Exit,
};
new ParallaxContainer
{
ParallaxAmount = 0.01f,
Children = new Drawable[]
{
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 =>
{
@ -69,26 +82,6 @@ namespace osu.Game.Screens.Menu
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)
{