private void UpdateCharacter() { if (Character.Health <= 0) { State = GameState.ShowingDeathMessage; Creatures.Clear(); Enemies.Clear(); return; } for (int i = 0; i < Character.Bullets.Count; i++) { var bullet = Character.Bullets[i]; if (bullet.X >= RenderWidth) { Character.Bullets.Remove(bullet); } else { bullet.PreciseX += bullet.Speed * FrameTime.TotalSeconds; } for (int j = 0; j < Enemies.Count; j++) { var enemy = Enemies[j]; if (enemy.IsEntityInBounds(bullet.X, bullet.Y)) { enemy.Health -= bullet.Damage; Character.Bullets.Remove(bullet); Creatures.Remove(bullet); if (enemy.Health <= 0) { KillEnemy((Enemy)enemy); } } } } }
private void UpdateEnemyBullets() { for (int bulletIndex = 0; bulletIndex < EnemyBullets.Count; bulletIndex++) { var enemyBullet = EnemyBullets[bulletIndex]; if (enemyBullet.X <= 0) { Creatures.Remove(enemyBullet); EnemyBullets.Remove(enemyBullet); continue; } enemyBullet.PreciseX += enemyBullet.Speed * FrameTime.TotalSeconds; if (Character.IsEntityInBounds(enemyBullet.X, enemyBullet.Y)) { Character.Health -= enemyBullet.Damage; EnemyBullets.Remove(enemyBullet); Creatures.Remove(enemyBullet); } } }
private void KillEnemy(Enemy enemy) { Kills++; Creatures.Remove(enemy); Enemies.Remove(enemy); }