/// <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) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape) || !running) { Exit(); } currState.Update(gameTime); AudioManager.Update(gameTime); // Handle GameState transitions GameState newState = currState.GetTransition(); if (newState != null) { //Set map if (newState == game) { ((StateGame)game).setMaps(((StateLevelSelect)levelMenu).getSelectedMap()); } if (newState == winScreen) { ((StateWin)winScreen).setMap(((StateLevelSelect)levelMenu).getSelectedMap().getName() + "/victory"); ((StateWin)winScreen).setPlayers(((StateGame)game).players); } //State unload/load currState.UnloadContent(); currState = newState; currState.Initialize(); currState.LoadContent(Content); } base.Update(gameTime); }