From fffc88332793236f9e70b465848f64f4f2f09200 Mon Sep 17 00:00:00 2001 From: Recrown Date: Mon, 12 Nov 2018 19:43:03 -0600 Subject: [PATCH] screen manager now only triggers event when screen is actually required. --- RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs | 4 ++-- .../Zer01HD/Utilities/ScreenSystem/ScreenManager.cs | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs b/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs index 780108a..778755f 100644 --- a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs +++ b/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs @@ -23,7 +23,7 @@ namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu public MainScreen(ContentSystem assets) : base(true) { background = assets.Get("backgrounds/mainBG"); - fat = new FadeAwayTransition(3f); + fat = new FadeAwayTransition(1.5f); book = new Book(Camera); } @@ -35,8 +35,8 @@ namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu public override void Draw(SpriteBatch spriteBatch) { - book.Draw(spriteBatch); spriteBatch.Draw(background, ScreenSize, Color.White); + book.Draw(spriteBatch); base.Draw(spriteBatch); } diff --git a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs index b4ed8d7..d2c6dca 100644 --- a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs +++ b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs @@ -67,7 +67,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem case ScreenState.ExitTransition: if (Screen.UseRenderTargetForExitTransition || Screen.UpdateTransition(gameTime.ElapsedGameTime.TotalSeconds, assetsDone)) { - OnRequireNextScreen(Screen); + if (Screen.NextScreen == null) + { + OnRequireNextScreen(Screen); + } if (Screen.NextScreen != null) { Debug.WriteLine("Changing to the next given screen."); @@ -77,7 +80,8 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem { Debug.WriteLine("Changing to previous screen."); Screen = previousScreen; - } else + } + else { throw new InvalidOperationException("No next screen provided and no previous screen to return to."); }