/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) { this.Exit(); } if (DEV_MODE) { if (intro.isShowing()) { intro.Hide(); } if (instruct.isShowing()) { instruct.Hide(); } if (instruct2.isShowing()) { instruct2.Hide(); } } if (intro.isShowing()) // if the introduction screen is showing, continue showing until introTime runs out (5 seconds) { intro.update(gameTime); } else if (instruct.isShowing()) // if instructions are showing, continue showing for 5 seconds and let it advance { instruct.update(gameTime); } else if (instruct2.isShowing()) // if second instructions are showing, continue showing { instruct2.update(gameTime); } else if (timex.isShowing()) // user ran out of time, time expired screen is up. will wait here for user to choose to play again or not { timex.update(gameTime); if (timex.play_again) // user wants to play again { timex.Hide(); // so hide game screen and timex.reset(); game_engine.Update(gameTime); // go to game environment } else if (!timex.isRunning()) // user did not select play again before time ran out { timex.Hide(); spriteBatch.Begin(); gameover.Show(spriteBatch); // exit game spriteBatch.End(); } } else if (gameover.isShowing()) // game over screen is showing { gameover.update(gameTime); if (gameover.exit) { this.Exit(); // end game } } else { game_engine.Update(gameTime); if (game_engine.gameEnded) { spriteBatch.Begin(); gameover.Show(spriteBatch); spriteBatch.End(); } } base.Update(gameTime); }