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); }
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); }