Esempio n. 1
0
        protected override void Update(GameTime gameTime) //----------Find a way to get it back to default
        {
            switch (CurrentState)
            {
            case GameState.WelcomeScreen:
                if (Keyboard.GetState().IsKeyDown(Keys.Space))
                {
                    CurrentState = GameState.StartScreen;
                }
                block = block.SpawnNewBlock(Content, block);     //Move to block?
                block.TetrisGameBlocks(Content);                 //Move to block?
                break;
            }
            switch (CurrentState)
            {
            case GameState.StartScreen:
                if (Keyboard.GetState().IsKeyDown(Keys.X))
                {
                    CurrentState = GameState.PlayScreen;
                }
                //activeBlock.TetrisGameBlocks(Content);
                break;
            }
            //  if(GameState.PlayScreen == CurrentState)
            //      activeBlock.Falling(gameTime);

            previousKeyboardState = currentKeyboardState;
            currentKeyboardState  = Keyboard.GetState();  //-----------Allt här ska väl till inputhelper?

            //Exit game
            if (Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }
            // lBlockInvert.Falling(gameTime);

            inputHelper.Update(gameTime);
            tetrisGrid.Update(gameTime);
            block.Update(gameTime);
        }
Esempio n. 2
0
        protected override void Update(GameTime gameTime)
        {
            if (Paused == true)
            {
                if (Input.KeyboardKeyJustPressed(Keys.P) == false)
                {
                    base.Update(gameTime);
                    return;
                }
                Paused = false;
            }
            else if (Input.KeyboardKeyJustPressed(Keys.P) == true)
            {
                Paused = true;
                base.Update(gameTime);
                return;
            }

            int oldGameMs = mElapsedGameMs;
            int frameMs   = (int)gameTime.ElapsedGameTime.TotalMilliseconds;

            mElapsedGameMs += frameMs;

            // Game tick time, 1000 for difficutly=0, 100 for difficutly=9
            int gameTickTime = 1000 / (mLevel + 1);

            if (mElapsedGameMs / gameTickTime != oldGameMs / gameTickTime || mTetrisGrid.MovingDownWasBlocked == true)
            {
                mTetrisGrid.Update();
            }

            // Official way to raise level - after 10 crushed lines
            if ((mTetrisGrid.CrushedLines / 10) > mLevel)
            {
                mLevel++;
                Sound.Play(ESoundTypes.Victory);
            }

            // We sum up the elapsed time after a button/key was pressed.
            // If some time has been reached, the action will be executed.
            // If we just execute it after the button/key was pressed,
            // the block would move extrem fast.
            // Current speed of 75ms is kind enough.
            if (Input.KeyboardLeftPressed || Input.GamePadLeftPressed)
            {
                mPressedLeftMs += frameMs;
            }
            else
            {
                mPressedLeftMs = 0;
            }
            if (Input.KeyboardRightPressed || Input.GamePadRightPressed)
            {
                mPressedRightMs += frameMs;
            }
            else
            {
                mPressedRightMs = 0;
            }
            if (Input.KeyboardDownPressed || Input.GamePadDownPressed || Input.Keyboard.IsKeyDown(Keys.Space) || Input.GamePadAPressed)
            {
                mPressedDownMs += frameMs;
            }
            else
            {
                mPressedDownMs = 0;
            }

            if (Input.KeyboardLeftJustPressed || Input.GamePadLeftJustPressed || mPressedLeftMs > 200)
            {
                if (mPressedLeftMs > 75)
                {
                    mPressedLeftMs -= 75;
                }
                mTetrisGrid.MoveBlock(EMoveTypes.Left);
            }
            else if (Input.KeyboardRightJustPressed || Input.GamePadRightJustPressed || mPressedRightMs > 200)
            {
                if (mPressedRightMs > 75)
                {
                    mPressedRightMs -= 75;
                }
                mTetrisGrid.MoveBlock(EMoveTypes.Right);
            }
            else if (Input.KeyboardDownJustPressed || Input.GamePadDownJustPressed || Input.KeyboardSpaceJustPressed || Input.GamePadAJustPressed || mPressedDownMs > 150)
            {
                if (mPressedDownMs > 50)
                {
                    mPressedDownMs -= 50;
                }
                mTetrisGrid.MoveBlock(EMoveTypes.Down);
            }
            else if (Input.KeyboardUpJustPressed || Input.GamePadUpJustPressed)
            {
                mTetrisGrid.RotateBlock();
            }

            if (mTetrisGrid.TotalScore != mHighscore)
            {
                mHighscore = mTetrisGrid.TotalScore;
            }

            // Restart using Enter
            if (mTetrisGrid.GameOver && (Input.KeyboardSpaceJustPressed || Input.GamePadAJustPressed || Input.KeyboardEnterJustPressed))
            {
                mTetrisGrid.GameOver     = false;
                mTetrisGrid.TotalScore   = 0;
                mTetrisGrid.CrushedLines = 0;
                mLevel = 0;
                mTetrisGrid.Restart();
            }

            base.Update(gameTime);
        }