screen manager now only triggers event when screen is actually required.

This commit is contained in:
Harrison Deng 2018-11-12 19:43:03 -06:00
parent d8bb78252d
commit fffc883327
2 changed files with 8 additions and 4 deletions

View File

@ -23,7 +23,7 @@ namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu
public MainScreen(ContentSystem assets) : base(true)
{
background = assets.Get<Texture2D>("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);
}

View File

@ -66,8 +66,11 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
break;
case ScreenState.ExitTransition:
if (Screen.UseRenderTargetForExitTransition || Screen.UpdateTransition(gameTime.ElapsedGameTime.TotalSeconds, assetsDone))
{
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.");
}