Exemple #1
0
    public static List <SubWave> AutoGenerateWave(int numberOfEnemies)
    {
        bool           clockwise = false;
        List <SubWave> wave      = new List <SubWave> ();

        while (numberOfEnemies > 0)
        {
            if (numberOfEnemies % 10 == 0)
            {
                SubWave subWave = new SubWave(0.5f);
                subWave.AddEnemy(EnemyFactory.SlowEnemy());
                wave.Add(subWave);
            }
            else if (numberOfEnemies % 9 == 0)
            {
                SubWave subWave = new SubWave(0.5f);  //
                subWave.AddEnemy(EnemyFactory.StandardEnemy());
                wave.Add(subWave);
            }
            else if (numberOfEnemies % 8 == 0)
            {
                SubWave subWave = new SubWave(0.5f);
                subWave.AddEnemy(EnemyFactory.RangedCirclingEnemy(clockwise));
                clockwise = !clockwise;
                wave.Add(subWave);
            }
            else if (numberOfEnemies % 7 == 0)
            {
                SubWave subWave = new SubWave(0.5f);
                subWave.AddEnemy(EnemyFactory.ZigZag());
                wave.Add(subWave);
            }
            else if (numberOfEnemies % 6 == 0)
            {
                SubWave subWave = new SubWave(0.5f);
                subWave.AddEnemy(EnemyFactory.FastEnemy());
                wave.Add(subWave);
            }
            else if (numberOfEnemies % 5 == 0)
            {
                SubWave subWave = new SubWave(0.5f);
                subWave.AddEnemy(EnemyFactory.Rotator(clockwise));
                clockwise = !clockwise;
                wave.Add(subWave);
            }
            else if (numberOfEnemies % 4 == 0)
            {
                SubWave subWave = new SubWave(0.5f);
                subWave.AddEnemy(EnemyFactory.RangedCirclingEnemy(clockwise));
                clockwise = !clockwise;
                wave.Add(subWave);
            }
            else if (numberOfEnemies % 3 == 0)
            {
                SubWave subWave = new SubWave(0.5f);
                subWave.AddEnemy(EnemyFactory.SmallBomber());
                wave.Add(subWave);
            }
            else
            {
                SubWave subWave = new SubWave(0.5f);
                subWave.AddEnemy(EnemyFactory.FastEnemy());
                wave.Add(subWave);
            }

            numberOfEnemies--;
        }
        SubWave lastSubWave = new SubWave(0.5f);  //

        lastSubWave.AddEnemy(EnemyFactory.StandardEnemy());
        wave.Add(lastSubWave);
        //Shuffle the order of the subwaves within the wave.
        System.Random rng = new System.Random((int)DateTime.Now.Ticks);
        for (int i = 0; i < wave.Count; i++)
        {
            int     j   = rng.Next(0, wave.Count);
            SubWave tmp = wave [i];
            wave [i] = wave [j];
            wave [j] = tmp;
        }

        return(wave);
    }