コード例 #1
0
        //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;
        }
コード例 #2
0
        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;
        }