/// <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)
{
// Allows the game to exit
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Escape))
{
this.Exit();
}
// Check pause
bool pauseKey = (oldKeyboardState.IsKeyDown(Keys.P) && (keyboardState.IsKeyUp(Keys.P)));
oldKeyboardState = keyboardState;
if (pauseKey)
{
pause = !pause;
}
if (!pause)
{
// Find dynamic figure position
board.FindDynamicFigure();
// Increase player score
int lines = board.DestroyLines();
if (lines > 0)
{
score.Value += (int)((5.0f / 2.0f) * lines * (lines + 3));
board.Speed += 0.005f;
}
score.Level = (int)(10 * board.Speed);
// Create new shape in game
if (!board.CreateNewFigure())
{
GameOver();
}
else
{
// If left key is pressed
if (keyboardState.IsKeyDown(Keys.Left))
{
board.MoveFigureLeft();
}
// If right key is pressed
if (keyboardState.IsKeyDown(Keys.Right))
{
board.MoveFigureRight();
}
// If down key is pressed
if (keyboardState.IsKeyDown(Keys.Down))
{
board.MoveFigureDown();
}
// Rotate figure
if (keyboardState.IsKeyDown(Keys.Up) || keyboardState.IsKeyDown(Keys.Space))
{
board.RotateFigure();
}
// Moving figure
if (board.Movement >= 1)
{
board.Movement = 0;
board.MoveFigureDown();
}
else
{
board.Movement += board.Speed;
}
}
}
base.Update(gameTime);
}