private static BulletFactory makeBossGun()
        {
            BulletFactory secondColliding = new BulletWaveWithCollidingBullet(new SurroundBulletFactory(48, new SingleBulletFactory(new SinusoidalLocationEquation(90, 90, 200))), new ShotgunBulletFactory(4 * Math.PI / 9, new LinearLocationEquation(0, .4F)));

            BulletFactory[] factories =
            { makeDefaultShotgun(),     makeBulletWaveWithCollidingBulletWave(),
              makeDefaultShotgun(), makeSinusoidalBulletFactory(),
              secondColliding };
            ChangingBulletFactoryData[] datas = new ChangingBulletFactoryData[factories.Length];

            int i = 0;

            foreach (var unused in factories)
            {
                datas[i] = new ChangingBulletFactoryData(factories[i], 2);
                i++;
            }

            datas[2].numberOfShots = 1;
//            datas[3].numberOfShots = 0;

            return(new ChangingBulletFactory(datas));
        }
        private static BulletFactory makeBossGun2()
        {
            // BulletFactory[] factories = new BulletFactory[]{makeDefaultShotgun(), makeSurroundBulletFactory(), makeBossSpiralFactory()};
            BulletFactory[]             factories = new BulletFactory[] { makeBossSpiralFactory(), makeDefaultShotgun(), makeSurroundBulletFactory() };
            ChangingBulletFactoryData[] datas     = new ChangingBulletFactoryData[factories.Length];

            int i = 0;

            foreach (var factory in factories)
            {
                datas[i] = new ChangingBulletFactoryData(factories[i], 1);
                i++;
            }

            datas[0].numberOfShots = 100;
            datas[0].shotDrops     = 1;
            datas[1].numberOfShots = 3;
            datas[1].shotDrops     = 100;
            datas[2].numberOfShots = 3;
            datas[2].shotDrops     = 100;

            return(new ChangingBulletFactory(datas));
        }