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