/// <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();
}
float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;
// Update according to current game state
switch (GameState)
{
case GameState.Initializing:
if (!LevelManager.Loading)
{
GameState = GameState.Gameplay;
}
break;
case GameState.Splash:
if (!LevelManager.Loading && Keyboard.GetState().IsKeyDown(Keys.Space))
{
GameState = GameState.Gameplay;
Music = LevelManager.CurrentSong;
if (Music != null)
{
MediaPlayer.Play(Music);
}
}
break;
case GameState.Gameplay:
LevelManager.Update(elapsedTime);
GameObjectManager.Update(elapsedTime);
ProcessCollisions();
break;
case GameState.Scoring:
if (!GuiManager.Tallying && Keyboard.GetState().IsKeyDown(Keys.Space))
{
GameState = GameState.Splash;
Music = Splash.Music;
if (Music != null)
{
MediaPlayer.Play(Music);
}
}
break;
case GameState.Credits:
// TODO: Launch new game when player hits space
break;
}
base.Update(gameTime);
}