diff --git a/osu.Game/GameModes/Menu/Intro.cs b/osu.Game/GameModes/Menu/Intro.cs index 4a7e338cfe..4339ec9b29 100644 --- a/osu.Game/GameModes/Menu/Intro.cs +++ b/osu.Game/GameModes/Menu/Intro.cs @@ -69,11 +69,8 @@ namespace osu.Game.GameModes.Menu protected override void OnResuming(GameMode last) { - //this is an exit - Game.Scheduler.AddDelayed(delegate - { - Game.Exit(); - }, 300); + //we are just an intro. if we are resumed, we just want to exit after a short delay (to allow the last mode to transition out). + Game.Scheduler.AddDelayed(Exit, 300); base.OnResuming(last); } diff --git a/osu.Game/GameModes/Menu/MainMenu.cs b/osu.Game/GameModes/Menu/MainMenu.cs index 5b8900a5e5..3ee28f5d03 100644 --- a/osu.Game/GameModes/Menu/MainMenu.cs +++ b/osu.Game/GameModes/Menu/MainMenu.cs @@ -47,11 +47,7 @@ namespace osu.Game.GameModes.Menu OnSolo = delegate { Push(new PlaySongSelect()); }, OnMulti = delegate { Push(new Lobby()); }, OnTest = delegate { Push(new TestBrowser()); }, - OnExit = delegate { - Game.Scheduler.AddDelayed(delegate { - Exit(); - }, ButtonSystem.EXIT_DELAY); - }, + OnExit = delegate { Game.Scheduler.AddDelayed(Exit, ButtonSystem.EXIT_DELAY); }, OnSettings = delegate { osu.Options.PoppedOut = !osu.Options.PoppedOut; }, diff --git a/osu.Game/GameModes/OsuGameMode.cs b/osu.Game/GameModes/OsuGameMode.cs index ad4a5b416b..8d63de1489 100644 --- a/osu.Game/GameModes/OsuGameMode.cs +++ b/osu.Game/GameModes/OsuGameMode.cs @@ -64,16 +64,5 @@ namespace osu.Game.GameModes base.OnExiting(next); } - - protected override void OnResuming(GameMode last) - { - base.OnResuming(last); - } - - protected override void OnSuspending(GameMode next) - { - base.OnSuspending(next); - } - } } diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 6f0becdab2..056c754d41 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -60,6 +60,7 @@ namespace osu.Game }); intro.ModePushed += modeAdded; + intro.Exited += modeRemoved; PlayMode = Config.GetBindable(OsuConfig.PlayMode); PlayMode.ValueChanged += delegate { Toolbar.SetGameMode(PlayMode.Value); }; @@ -89,6 +90,9 @@ namespace osu.Game Cursor.FadeIn(100); ModeChanged?.Invoke(newMode); + + if (newMode == null) + Host.Exit(); } private void modeAdded(GameMode newMode)