//Detect Collisions for everything private void DetectCollisions() { #region Player vs Asteroids if (spawntimer >= spawninterval) { #region Asteroid1 for (int i = 0; i <= NumAsteroid1 - 1; i++) { collide = collision.playerCollide(myModel, Asteroid1, asteroid1List[i].position, play.position, Content); if (collide == true) { spawntimer = 0; while (collide == true) { Random x = new Random(); Random y = new Random(); play.position.X = x.Next(-2000, 2000); play.position.Y = y.Next(-2000, 2000); collide = collision.playerCollide(myModel, Asteroid1, asteroid1List[i].position, play.position, Content); } collide = false; play.Lives -= 1; if (play.Lives == 0) { dead = true; } } } #endregion } if (spawntimer >= spawninterval) { #region Asteroid2 for (int i = 0; i <= NumAsteroid2 - 1; i++) { collide = collision.playerCollide(myModel, Asteroid2, asteroid2List[i].position, play.position, Content); if (collide == true) { spawntimer = 0; while (collide == true) { Random x = new Random(); Random y = new Random(); play.position.X = x.Next(-2000, 2000); play.position.Y = y.Next(-2000, 2000); collide = collision.playerCollide(myModel, Asteroid2, asteroid2List[i].position, play.position, Content); } collide = false; play.Lives -= 1; if (play.Lives == 0) { dead = true; } } } #endregion } if (spawntimer >= spawninterval) { #region Asteroid3 for (int i = 0; i <= NumAsteroid3 - 1; i++) { collide = collision.playerCollide(myModel, Asteroid3, asteroid3List[i].position, play.position, Content); if (collide == true) { spawntimer = 0; while (collide == true) { Random x = new Random(); Random y = new Random(); play.position.X = x.Next(-2000, 2000); play.position.Y = y.Next(-2000, 2000); collide = collision.playerCollide(myModel, Asteroid3, asteroid3List[i].position, play.position, Content); } collide = false; play.Lives -= 1; if (play.Lives == 0) { dead = true; } } } #endregion } #endregion #region Asteroids vs Bullets #region Asteroid1 for (int i = 0; i <= NumAsteroid1 - 1; i++) { bulletCollide = collision.BulletsCollide(ammo, Asteroid1, asteroid1List[i].position, BulletList[0].AmmoModelPosition, Content); if (bulletCollide == true) { Score += 10; #region Remove bullets bulletCollide = false; BulletList[0].AmmoModelPosition = new Vector3(5000, 5000f, 0.0f); BulletList[0].AmmoFlying = false; asteroid1List[i].lives -= 1; #endregion #region Out of lives if (asteroid1List[i].lives == 0) { SpawnAsteroids(asteroid1List[i].asteroidModel, asteroid1List[i].position); Score += 100; asteroid1List[i] = new Asteroid(Asteroid1, new Vector3(8000, 8000, 0), 0.0f, false, 0); asteroidsonscreen -= 1; Explosion.Play(0.5F); } #endregion } } #endregion #region Asteroid 2 for (int i = 0; i <= NumAsteroid2 - 1; i++) { bulletCollide2 = collision.BulletsCollide(ammo, Asteroid2, asteroid2List[i].position, BulletList[0].AmmoModelPosition, Content); if (bulletCollide2 == true) { Score += 10; #region Remove bullets BulletList[0].AmmoModelPosition = new Vector3(5000f, 5000f, 0.0f); BulletList[0].AmmoFlying = false; bulletCollide2 = false; asteroid2List[i].lives -= 1; #endregion #region Out of lives if (asteroid2List[i].lives == 0) { SpawnAsteroids(asteroid2List[i].asteroidModel, asteroid2List[i].position); Score += 50; asteroid2List[i] = new Asteroid(Asteroid2, new Vector3(8000, 8000, 0), 0.0f, false, 0); asteroidsonscreen -= 1; Explosion.Play(0.5F); } #endregion } } #endregion #region Asteroid3 for (int i = 0; i <= NumAsteroid3 - 1; i++) { bulletCollide3 = collision.BulletsCollide(ammo, Asteroid3, asteroid3List[i].position, BulletList[0].AmmoModelPosition, Content); if (bulletCollide3 == true) { Score += 10; #region Remove bullets BulletList[0].AmmoModelPosition = new Vector3(5000f, 5000f, 0.0f); BulletList[0].AmmoFlying = false; bulletCollide3 = false; asteroid3List[i].lives -= 1; #endregion #region Out of lives if (asteroid3List[i].lives == 0) { Score += 20; asteroid3List[i] = new Asteroid(Asteroid3, new Vector3(8000, 8000, 0), 0.0f, false, 0); asteroidsonscreen -= 1; //just using asteroidlist1 at the moment, adapt for all models Explosion.Play(0.5F); } #endregion } } #endregion #endregion #region UFO and bullets for (int i = 0; i <= noBullets - 1; i++) { collide = collision.pBulletsCollide(ammo, ufo, saucer.position, BulletList[0].AmmoModelPosition, Content); if (collide == true) { Score += 10; #region Remove bullets collide = false; BulletList[0].AmmoModelPosition = new Vector3(5000, 5000f, 0.0f); BulletList[0].AmmoFlying = false; #endregion collide = false; saucer.Lives -= 1; if (saucer.Lives == 0) { Explosion.Play(0.5F); Score += 500; saucer = new UFO(ufo, new Vector3(9000, 9000, 0), 0, 0, false); saucer.isAlive = false; } } } #endregion if (spawntimer >= spawninterval) { #region Ufo and player collide = collision.PlayersvPlayer(myModel, ufo, play.position, saucer.position, Content); if (collide == true) { spawntimer = 0; Random x = new Random(); Random y = new Random(); play.position.X = x.Next(-2000, 2000); play.position.Y = y.Next(-2000, 2000); collide = false; play.Lives -= 1; saucer.Lives -= 1; if (play.Lives == 0) { dead = true; } if (saucer.Lives == 0) { Explosion.Play(0.5F); saucer = new UFO(ufo, new Vector3(9000, 9000, 0), 0, 0, false); saucer.isAlive = false; } } #endregion } if (spawntimer >= spawninterval) { #region player vs ufo bullets for (int i = 0; i <= noBullets - 1; i++) { collide = collision.pBulletsCollide(ammo, myModel, play.position, ufoBulletList[0].AmmoModelPosition, Content); if (collide == true) { spawntimer = 0; #region Remove bullets bulletCollide = false; ufoBulletList[0].AmmoModelPosition = new Vector3(5000, 5000f, 0.0f); ufoBulletList[0].AmmoFlying = false; #endregion Random x = new Random(); Random y = new Random(); play.position.X = x.Next(-2000, 2000); play.position.Y = y.Next(-2000, 2000); collide = false; play.Lives -= 1; if (play.Lives == 0) { dead = true; } } } #endregion } }