//private public void BulletsCollisionHandler(List <BulletEngine> bullets, out List <BulletEngine> enemyBullets, MapBase map, bool enemy) { var lEnemyBullets = enemy ? _tank.Bullets : _enemyTank.Bullets; for (var i = 0; i < bullets.Count; i++) { //В даному методі чотрири рази написаний код //if (bullet != null) //{ // _bullet.OnBulletErase(bullet); // _bullet.BulletDeleteFromMap(bullet, map); // lEnemyBullets.Remove(bullet); //} //_bullet.OnBulletErase(bullets[i]); //_bullet.BulletDeleteFromMap(bullets[i], map); //bullets.Remove(bullets[i]); // //Можливо, варто було з цього коду зробити приватний метод switch (bullets[i].Direction) { case MoveDirection.Up: if (map.GameMap[bullets[i].Y - 1, bullets[i].X] == 4) { var bullet = lEnemyBullets.SingleOrDefault(bull => bull.X == bullets[i].X & bull.Y == bullets[i].Y - 1); if (bullet != null) { _bullet.OnBulletErase(bullet); _bullet.BulletDeleteFromMap(bullet, map); lEnemyBullets.Remove(bullet); } _bullet.OnBulletErase(bullets[i]); _bullet.BulletDeleteFromMap(bullets[i], map); bullets.Remove(bullets[i]); } break; case MoveDirection.Down: if (map.GameMap[bullets[i].Y + 1, bullets[i].X] == 4) { var bullet = lEnemyBullets.SingleOrDefault(bull => bull.X == bullets[i].X & bull.Y == bullets[i].Y + 1); if (bullet != null) { _bullet.OnBulletErase(bullet); _bullet.BulletDeleteFromMap(bullet, map); lEnemyBullets.Remove(bullet); } _bullet.OnBulletErase(bullets[i]); _bullet.BulletDeleteFromMap(bullets[i], map); bullets.Remove(bullets[i]); } break; case MoveDirection.Left: if (map.GameMap[bullets[i].Y, bullets[i].X - 1] == 4) { var bullet = lEnemyBullets.SingleOrDefault(bull => bull.X == bullets[i].X - 1 & bull.Y == bullets[i].Y); if (bullet != null) { _bullet.OnBulletErase(bullet); _bullet.BulletDeleteFromMap(bullet, map); lEnemyBullets.Remove(bullet); } _bullet.OnBulletErase(bullets[i]); _bullet.BulletDeleteFromMap(bullets[i], map); bullets.Remove(bullets[i]); } break; case MoveDirection.Right: if (map.GameMap[bullets[i].Y, bullets[i].X + 1] == 4) { var bullet = lEnemyBullets.SingleOrDefault(bull => bull.X == bullets[i].X + 1 & bull.Y == bullets[i].Y); if (bullet != null) { _bullet.OnBulletErase(bullet); _bullet.BulletDeleteFromMap(bullet, map); lEnemyBullets.Remove(bullet); } _bullet.OnBulletErase(bullets[i]); _bullet.BulletDeleteFromMap(bullets[i], map); bullets.Remove(bullets[i]); } break; } } enemyBullets = lEnemyBullets; }
public void BulletsCollisionHandler(List <BulletEngine> bullets, out List <BulletEngine> enemyBullets, MapBase map, bool enemy) { var lEnemyBullets = enemy ? _tank.Bullets : _enemyTank.Bullets; for (var i = 0; i < bullets.Count; i++) { switch (bullets[i].Direction) { case MoveDirection.Up: if (map.GameMap[bullets[i].Y - 1, bullets[i].X] == 4) { var bullet = lEnemyBullets.SingleOrDefault(bull => bull.X == bullets[i].X & bull.Y == bullets[i].Y - 1); if (bullet != null) { _bullet.OnBulletErase(bullet); _bullet.BulletDeleteFromMap(bullet, map); lEnemyBullets.Remove(bullet); } _bullet.OnBulletErase(bullets[i]); _bullet.BulletDeleteFromMap(bullets[i], map); bullets.Remove(bullets[i]); } break; case MoveDirection.Down: if (map.GameMap[bullets[i].Y + 1, bullets[i].X] == 4) { var bullet = lEnemyBullets.SingleOrDefault(bull => bull.X == bullets[i].X & bull.Y == bullets[i].Y + 1); if (bullet != null) { _bullet.OnBulletErase(bullet); _bullet.BulletDeleteFromMap(bullet, map); lEnemyBullets.Remove(bullet); } _bullet.OnBulletErase(bullets[i]); _bullet.BulletDeleteFromMap(bullets[i], map); bullets.Remove(bullets[i]); } break; case MoveDirection.Left: if (map.GameMap[bullets[i].Y, bullets[i].X - 1] == 4) { var bullet = lEnemyBullets.SingleOrDefault(bull => bull.X == bullets[i].X - 1 & bull.Y == bullets[i].Y); if (bullet != null) { _bullet.OnBulletErase(bullet); _bullet.BulletDeleteFromMap(bullet, map); lEnemyBullets.Remove(bullet); } _bullet.OnBulletErase(bullets[i]); _bullet.BulletDeleteFromMap(bullets[i], map); bullets.Remove(bullets[i]); } break; case MoveDirection.Right: if (map.GameMap[bullets[i].Y, bullets[i].X + 1] == 4) { var bullet = lEnemyBullets.SingleOrDefault(bull => bull.X == bullets[i].X + 1 & bull.Y == bullets[i].Y); if (bullet != null) { _bullet.OnBulletErase(bullet); _bullet.BulletDeleteFromMap(bullet, map); lEnemyBullets.Remove(bullet); } _bullet.OnBulletErase(bullets[i]); _bullet.BulletDeleteFromMap(bullets[i], map); bullets.Remove(bullets[i]); } break; } } enemyBullets = lEnemyBullets; }