Example #1
0
        private static void CheckShipEscaped(IEnumerable <Ship> ships, DestroyShips destroyShips)
        {
            List <Ship> doomedShips = new List <Ship>();

            foreach (Ship ship in ships)
            {
                if (!ship.Destroyed)
                {
                    if (Math.Abs(ship.Vel.Origin.X) > 500 ||
                        Math.Abs(ship.Vel.Origin.Y) > 500)
                    {
                        doomedShips.Add(ship);
                    }
                }
            }
            destroyShips(doomedShips);
        }
Example #2
0
        public static void CheckShotShipCollision(IEnumerable <Shot> shots, IEnumerable <Ship> ships, DestroyShots destroyShots, DestroyShips destroyShips) // 50 * 4 = 200 / 2082
        {
            List <Shot> doomedShots = new List <Shot>();
            List <Ship> doomedShips = new List <Ship>();

            foreach (Shot shot in shots)
            {
                foreach (Ship ship in ships)
                {
                    if (!ship.Destroyed)
                    {
                        if (checkCoordinatePolygonCollision(shot.Vel.Origin, ship))
                        {
                            doomedShots.Add(shot);
                            doomedShips.Add(ship);
                        }
                    }
                }
            }
            destroyShots(doomedShots);
            destroyShips(doomedShips);
        }
Example #3
0
 public static void HandleCollisions(IEnumerable <Shot> shots, IEnumerable <Asteroid> asteroids, IEnumerable <Planet> planets, IEnumerable <Ship> ships, IMassive barycenter, DestroyShots destroyShots, DestroyShips destroyShips, DestroyAsteroids destroyAsteroids, int maxShots, int maxAsteroids)
 {
     CheckShotEscaped(shots, destroyShots, barycenter);
     CheckAsteroidEscaped(asteroids, destroyAsteroids, barycenter);
     CheckShipEscaped(ships, destroyShips);
     CheckShotAsteroidCollision(shots, asteroids, destroyShots, destroyAsteroids);
     CheckShotShipCollision(shots, ships, destroyShots, destroyShips);
     CheckShotPlanetCollision(shots, planets, destroyShots);
     CheckAsteroidShipCollision(asteroids, ships, destroyAsteroids, destroyShips);
     CheckAsteroidPlanetCollision(asteroids, planets, destroyAsteroids);
     CheckShipPlanetCollision(ships, planets, destroyShips);
     CheckMaxShots(shots, maxShots);
     CheckMaxAsteroids(asteroids, maxAsteroids);
 }
Example #4
0
        public static void CheckShipPlanetCollision(IEnumerable <Ship> ships, IEnumerable <Planet> planets, DestroyShips destroyShips) // 4 * 3 = 12 / 2082
        {
            List <Ship> doomedShips = new List <Ship>();

            foreach (Ship ship in ships)
            {
                if (!ship.Destroyed)
                {
                    foreach (Planet planet in planets)
                    {
                        if (checkPolygonCircleCollision(ship, planet))
                        {
                            doomedShips.Add(ship);
                        }
                    }
                }
            }
            destroyShips(doomedShips);
        }
Example #5
0
        public static void CheckAsteroidShipCollision(IEnumerable <Asteroid> asteroids, IEnumerable <Ship> ships, DestroyAsteroids destroyAsteroids, DestroyShips destroyShips) // 30 * 4 = 120 / 2082
        {
            List <Asteroid> doomedAsteroids = new List <Asteroid>();
            List <Ship>     doomedShips     = new List <Ship>();

            foreach (Asteroid asteroid in asteroids)
            {
                foreach (Ship ship in ships)
                {
                    if (!ship.Destroyed)
                    {
                        if (checkMultiplePolygonCollision(asteroid, ship))
                        {
                            doomedAsteroids.Add(asteroid);
                            doomedShips.Add(ship);
                        }
                    }
                }
            }
            destroyAsteroids(doomedAsteroids, true);
            destroyShips(doomedShips);
        }