/// <summary> /// Erzeugt eine Liste von Gegner-Objekten aus einem Vector2-Array. /// </summary> /// <param name="AI">Art der Welle</param> /// <param name="hitpoints">Lebenspunkte</param> /// <param name="velocity">Geschwindigkeit</param> /// <param name="formation">Formation der Welle</param> /// <param name="damage">Kollisionsschaden</param> /// <param name="scoreGain">Abschusspunktzahl</param> /// <returns>Die generierte Liste von Gegnern</returns> public static LinkedList <IGameItem> CreateFormation(BehaviourEnum AI, int hitpoints, Vector2 velocity, Vector2[] formation, int damage, int scoreGain) { LinkedList <IGameItem> wave = new LinkedList <IGameItem>(); if (AI.Equals(BehaviourEnum.MothershipMovement)) { for (int i = 0; i < formation.Length; i++) { wave.AddLast(new Mothership(formation[i], velocity, hitpoints, damage, GameItemConstants.MothershipWeapon, scoreGain)); } } else { for (int i = 0; i < formation.Length; i++) { wave.AddLast(new Alien(formation[i], velocity, hitpoints, damage, GameItemConstants.AlienWeapon, scoreGain)); } } return(wave); }
/// <summary> /// Erzeugt eine neue Welle und ruft danach das Event "WaveGenerated" auf, um dem Controller die gewünschten Controller-Eigenschaften mitzuteilen. /// </summary> /// <remarks>Dem Event "WaveGenerated" werden die gewünschte Controller-AI, die erstellte Liste an Gegnern und das Schwierigkeitsgrad-Objekt übergeben.</remarks> /// <param name="AI">gewünschtes Verhalten des Controllers</param> /// <param name="formation">gewünschte Formation der Welle</param> /// <param name="difficultyLevel">gewünschter Schwierigkeitsgrad</param> /// <returns>Eine Liste von Gegnern, die die aktuelle Welle darstellen</returns> public static LinkedList <IGameItem> CreateWave(BehaviourEnum AI, Vector2[] formation, DifficultyLevel difficultyLevel) { int hitpoints; Vector2 velocity; int damage; int scoreGain; LinkedList <IGameItem> wave = null; if (AI.Equals(BehaviourEnum.MothershipMovement)) { hitpoints = (int)(GameItemConstants.MothershipHitpoints * difficultyLevel.HitpointsMultiplier); velocity.X = GameItemConstants.MothershipVelocity.X * difficultyLevel.VelocityMultiplier.X; velocity.Y = GameItemConstants.MothershipVelocity.Y * difficultyLevel.VelocityMultiplier.Y; damage = (int)(GameItemConstants.MothershipDamage * difficultyLevel.DamageMultiplier); scoreGain = (int)(GameItemConstants.MothershipScoreGain * difficultyLevel.ScoreGainMultiplier); wave = FormationGenerator.CreateFormation(BehaviourEnum.MothershipMovement, hitpoints, velocity, formation, damage, scoreGain); } else { hitpoints = (int)(GameItemConstants.AlienHitpoints * difficultyLevel.HitpointsMultiplier); velocity.X = GameItemConstants.AlienVelocity.X * difficultyLevel.VelocityMultiplier.X; velocity.Y = GameItemConstants.AlienVelocity.Y * difficultyLevel.VelocityMultiplier.Y; damage = (int)(GameItemConstants.AlienDamage * difficultyLevel.DamageMultiplier); scoreGain = (int)(GameItemConstants.AlienScoreGain * difficultyLevel.ScoreGainMultiplier); wave = FormationGenerator.CreateFormation(BehaviourEnum.BlockMovement, hitpoints, velocity, formation, damage, scoreGain); } if (WaveGenerated != null) { WaveGenerated(null, new ControllerEventArgs(AI, wave, difficultyLevel)); } return(wave); }