/// <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 (GameStateManager.CurrentGameState == GameStateManager.GameState.Game) { IsMouseVisible = false; HandleInput(gameTime); playerSprite.Move(gameTime); CurrentLevel.NpcContainer.Update(gameTime); if (playerIsDead == false) { // Check if player touches an enemy foreach (EnemySprite sprite in CurrentLevel.NpcContainer.NPCList) { if (playerSprite.CollidesWith(sprite)) { playerIsDead = true; Thread.Sleep(3000); GameStateManager.CurrentGameState = GameStateManager.GameState.Menu; mainWindow.Show(); IsMouseVisible = true; } } } // Check the tiles the player touches List <Tile> tileToCheck = CurrentLevel.GetTiles(playerSprite.bounds); foreach (Tile tile in tileToCheck) { if (tile != null && playerSprite.CollidesWith(tile)) { collisionDebugString = "Player collides with tile " + tile.Position + " " + tile.TileType; tile.Collision = true; } } // Make camera follow player int movement = (int)(playerSprite.Speed * (float)gameTime.ElapsedGameTime.TotalMilliseconds / 1000); camera.Speed = movement; camera.CenterAt(playerSprite.CenterPosition); // Update the HUD gameHUD.Update(Score.ToString(), DiamondsCollected, currentLevel.DiamondsToCollect); base.Update(gameTime); } else { base.Update(gameTime); } }