How to pause and resume a game in XNA using the same key?
- by user13095
I'm attempting to implement a really simple game state system, this is my first game - trying to make a Tetris clone. I'd consider myself a novice programmer at best. I've been testing it out by drawing different textures to the screen depending on the current state.
The 'Not Playing' state seems to work fine, I press Space and it changes to 'Playing', but when I press 'P' to pause or resume the game nothing happens. I tried checking current and previous keyboard states thinking it was happening to fast for me to see, but again nothing seemed to happen. If I change either the pause or resume, so they're both different, it works as intended.
I'm clearly missing something obvious, or completely lacking some know-how in regards to how update and/or the keyboard states work.
Here's what I have in my Update method at the moment:
protected override void Update(GameTime gameTime)
{
KeyboardState CurrentKeyboardState = Keyboard.GetState();
// Allows the game to exit
if (CurrentKeyboardState.IsKeyDown(Keys.Escape))
this.Exit();
// TODO: Add your update logic here
if (CurrentGameState == GameStates.NotPlaying)
{
if (CurrentKeyboardState.IsKeyDown(Keys.Space))
CurrentGameState = GameStates.Playing;
}
if (CurrentGameState == GameStates.Playing)
{
if (CurrentKeyboardState.IsKeyDown(Keys.P))
CurrentGameState = GameStates.Paused;
}
if (CurrentGameState == GameStates.Paused)
{
if (CurrentKeyboardState.IsKeyDown(Keys.P))
CurrentGameState = GameStates.Playing;
}
base.Update(gameTime);
}