/// <summary>
 /// Protected method that fires the collision event.
 /// </summary>
 /// <param name="killedAlien">Alien that was hit by a laser.</param>
 /// <param name="points">Points received when alien is killed</param>
 protected void onAlienCollision(AlienSprite killedAlien, int points)
 {
     if (AlienCollision != null)
     {
         AlienCollision(killedAlien, points);
     }
 }
        /// <summary>
        /// Called when a collision is detected between an AlienSprite and a Projectile from the
        /// LaserFactory.
        /// </summary>
        /// <param name="killedAlien">The killed Alien from which the collision was detected on.</param>
        private void killAlien(DrawableGameComponent killedAlien, int points)
        {
            AlienSprite alien = ((AlienSprite)killedAlien);

            // remove a hit point from alien
            alien.SetHitPoints(alien.GetHitPoints() - 1);

            if (alien.GetHitPoints() <= 0)
            {
                alien.SetAlienState(AlienState.INACTIVE);
                alienKillSoundInstance.Play();
                killedCount++;
                //Increases speed of squad once a certain number are killed
                if ((killedCount % 8) == 0)
                {
                    Alien.IncreaseSpeed();
                }
                //Resets squad if all are killed
                if (killedCount == alienSquad.Length)
                {
                    level++;
                    alienLevel++;
                    resetAlienSquad();
                }
                //Spawns mothership once a certain number are killed
                if (killedCount == (alienSquad.Length / 2))
                {
                    mothershipSprite.RandomizeMothershipSpawn();
                    mothershipSprite.SetAlienState(AlienState.ACTIVE);
                    mothershipSprite.SetSpawnMother(true);
                }
            }

            else
            {
                // check what type of alien was hit, change texture to a hit sprite alien of that type
                if (alien.GetAlienType() == AlienType.SPACESHIP)
                {
                    alien.SetTexture(hitAlienTexture1);
                }
                else if (alien.GetAlienType() == AlienType.BUG)
                {
                    alien.SetTexture(hitAlienTexture2);
                }
                else if (alien.GetAlienType() == AlienType.FLYINGSAUCER)
                {
                    alien.SetTexture(hitAlienTexture3);
                }
            }
        }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            alienWidth             = game.Content.Load <Texture2D>("spaceship1").Width;
            alienHeight            = game.Content.Load <Texture2D>("spaceship1").Height;
            alienKillSound         = game.Content.Load <SoundEffect>("alienKillSound");
            alienKillSoundInstance = alienKillSound.CreateInstance();

            // Determines the graphical image that the Alien will take
            for (int ctr = 0; ctr < alienSquad.GetLength(1); ctr++)
            {
                alienSquad[0, ctr] = new AlienSprite(game, alienTexture1);
                alienSquad[0, ctr].SetAlienType(AlienType.SPACESHIP);
                alienSquad[0, ctr].Initialize();
                alienSquad[1, ctr] = new AlienSprite(game, alienTexture2);
                alienSquad[1, ctr].SetAlienType(AlienType.BUG);
                alienSquad[1, ctr].Initialize();
                alienSquad[2, ctr] = new AlienSprite(game, alienTexture3);
                alienSquad[2, ctr].SetAlienType(AlienType.FLYINGSAUCER);
                alienSquad[2, ctr].Initialize();
            }

            drawAlienSquad();
            base.LoadContent();
        }