public void StartBelt(int iNumAsteroids, Asteroid.ASTEROID_SIZE iMinSize) { asteroids = new ArrayList(); Asteroid.ASTEROID_SIZE aAsteroidSize; for (int i = 0; i < iNumAsteroids; i++) { aAsteroidSize = Asteroid.ASTEROID_SIZE.LARGE - rndGen.Next(Asteroid.ASTEROID_SIZE.LARGE - iMinSize + 1); asteroids.Add(new Asteroid(aAsteroidSize)); } }
public void StartBelt(int iNumAsteroids, Asteroid.ASTEROID_SIZE iMinSize) { var minSize = Asteroid.ASTEROID_SIZE.LARGE - iMinSize + 1; var asteroids = new List <Asteroid>(); for (int i = 0; i < iNumAsteroids; i++) { var size = Asteroid.ASTEROID_SIZE.LARGE - RandomizeHelper.Random.Next(minSize); asteroids.Add(new Asteroid(size)); } lock (_updateAsteroidsLock) _asteroids = asteroids; }
public void StartBelt(int iNumAsteroids, Asteroid.ASTEROID_SIZE iMinSize) { var asteroids = new List <Asteroid>(); Asteroid.ASTEROID_SIZE aAsteroidSize; for (int i = 0; i < iNumAsteroids; i++) { aAsteroidSize = Asteroid.ASTEROID_SIZE.LARGE - Random.Next(Asteroid.ASTEROID_SIZE.LARGE - iMinSize + 1); asteroids.Add(new Asteroid(aAsteroidSize)); } lock (_updateAsteroidsLock) _asteroids = asteroids; }
/// <summary> /// Determine if a point is in contact with the asteroid. /// </summary> /// <param name="location">Current location of the</param> /// <param name="size">Point collection to check.</param> /// <param name="pointsToCheck">Point collection to check.</param> /// <returns>Indication if the point is inside the polygon.</returns> private bool AsteroidCollision(Point location, Asteroid.ASTEROID_SIZE size, IList <Point> pointsToCheck) { var inside = false; foreach (var ptCheck in pointsToCheck) { var dist = ptCheck.DistanceTo(location); var pixel = (int)size * Asteroid.SIZE_INCREMENT; if (dist > pixel) { continue; } inside = true; break; } return(inside); }
public int CheckPointCollisions(Point ptCheck) { int pointValue = 0; int iCount = asteroids.Count; for (int i = iCount - 1; i >= 0; i--) { if (((Asteroid)asteroids[i]).CheckPointInside(ptCheck)) { Asteroid.ASTEROID_SIZE sizeReduced = ((Asteroid)asteroids[i]).ReduceSize(); switch (sizeReduced) { case Asteroid.ASTEROID_SIZE.DNE: pointValue = 250; // destroyed small - MEDIUM 100 pts PlaySound("EXPLODE3.WAV"); asteroids.RemoveAt(i); break; case Asteroid.ASTEROID_SIZE.SMALL: pointValue = 100; // destroyed large - MEDIUM 100 pts PlaySound("EXPLODE2.WAV"); break; case Asteroid.ASTEROID_SIZE.MEDIUM: pointValue = 50; // destroyed large - 50 pts PlaySound("EXPLODE1.WAV"); break; } // Add a new asteroid if it wasn't small if (sizeReduced != Asteroid.ASTEROID_SIZE.DNE) { asteroids.Add(new Asteroid((Asteroid)asteroids[i])); } break; } } return(pointValue); }
public AsteroidBelt(int iNumAsteroids, Asteroid.ASTEROID_SIZE iMinSize) { StartBelt(iNumAsteroids, iMinSize); }
public AsteroidBelt(int iNumAsteroids, Asteroid.ASTEROID_SIZE iMinSize) { _updateAsteroidsLock = new object(); StartBelt(iNumAsteroids, iMinSize); }