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