/// <summary> /// Update changes the layout and positions based on input or other variables /// Base class updates all items in the scene then calls any overlays to get them to render themselves /// </summary> /// <param name="time">Total game time since it was started</param> /// <param name="elapsedTime">Elapsed game time since the last call to update</param> /// <returns>The next gamestate to transition to. Default is the return value of an overlay or NONE. Override Update if you want to change this behaviour</returns> public virtual GameState Update(TimeSpan time, TimeSpan elapsedTime) { //Update the Scene scene.Update(time, elapsedTime); //Default is no state changes, override the class if you want a different state return((overlay == null) ? GameState.None : overlay.Update(time, elapsedTime)); }
protected override void Update(GameTime gameTime) { TimeSpan elapsedTime = gameTime.ElapsedGameTime; TimeSpan time = gameTime.TotalGameTime; // The time since Update was called last float elapsed = (float)elapsedTime.TotalSeconds; GameState changeState = GameState.None; keyState = Keyboard.GetState(); XInputHelper.Update(this, keyState); if ((keyState.IsKeyDown(Keys.RightAlt) || keyState.IsKeyDown(Keys.LeftAlt)) && keyState.IsKeyDown(Keys.Enter) && !justWentFullScreen) { ToggleFullScreen(); justWentFullScreen = true; } if (keyState.IsKeyUp(Keys.Enter)) { justWentFullScreen = false; } if (XInputHelper.GamePads[PlayerIndex.One].BackPressed || XInputHelper.GamePads[PlayerIndex.Two].BackPressed) { if (gameState == GameState.PlayEvolved || gameState == GameState.PlayRetro) { paused = !paused; } if (gameState == GameState.LogoSplash) { this.Exit(); } } //Reload settings file? if (XInputHelper.GamePads[PlayerIndex.One].YPressed) { //settings = Settings.Load("settings.xml"); //GC.Collect(); } if (!paused) { //Update everything changeState = currentScreen.Update(time, elapsedTime); // Update the AudioEngine - MUST call this every frame!! Sound.Update(); //If either player presses start then reset the game if (XInputHelper.GamePads[PlayerIndex.One].StartPressed || XInputHelper.GamePads[PlayerIndex.Two].StartPressed) { changeState = GameState.LogoSplash; } if (changeState != GameState.None) { ChangeState(changeState); } } base.Update(gameTime); }