Exemple #1
0
        //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
            }
        }