/// <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) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } MouseState currentMouseState = Mouse.GetState(); if (lastMouseState.LeftButton == ButtonState.Released && currentMouseState.LeftButton == ButtonState.Pressed && currentMouseState.X >= 0 && graphics.PreferredBackBufferWidth > currentMouseState.X && currentMouseState.Y >= 0 && graphics.PreferredBackBufferHeight > currentMouseState.Y) { screen.Click(currentMouseState.X, currentMouseState.Y); } GameStatus currentGameStatus = screen.Update(); if (lastGameStatus != currentGameStatus) { switch (currentGameStatus) { case GameStatus.StartScreen: screen = new StartScreen(spriteBatch, font); break; case GameStatus.GameScreen: screen = new GameScreen(spriteBatch, font); break; case GameStatus.GameOverScreen: screen = new GameOverScreen(spriteBatch, font); break; } } lastGameStatus = currentGameStatus; lastMouseState = currentMouseState; base.Update(gameTime); }