Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        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);
        }