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); }
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); }
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); }
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); }
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); }