コード例 #1
0
 public InfiniteWave(Simulator simulator, DescriptorInfiniteWaves descriptor)
 {
     Simulator = simulator;
     Descriptor = descriptor;
     NbWavesAsked = 0;
     ActualDifficulty = Descriptor.StartingDifficulty - Descriptor.DifficultyIncrement;
 }
コード例 #2
0
        public UpfrontInfiniteWave(Simulator simulator, DescriptorInfiniteWaves descriptor, int nbWaves)
            : base(simulator, descriptor)
        {
            Waves = new List<Wave>();
            MaxWaves = nbWaves;

            var difficulty = Descriptor.StartingDifficulty;

            for (int i = 0; i < nbWaves; i++)
            {
                var waveDesc = WaveGenerator.Generate(
                    difficulty,
                    Main.Random.Next((int) Descriptor.MinMaxEnemiesPerWave.X, (int) Descriptor.MinMaxEnemiesPerWave.Y),
                    Descriptor.Enemies);

                if (i == 0 && Descriptor.FirstOneStartNow)
                    waveDesc.StartingTime = 0;

                Waves.Add(new Wave(simulator, waveDesc));

                difficulty += Descriptor.DifficultyIncrement;
            }
        }
コード例 #3
0
        private void PrepareWorldLayout(int id)
        {
            LevelDescriptor d = Descriptors[id];

            // set lives so the planet won't explode...!
            d.Player.Lives = 1;
            d.Player.Money = 100;

            // generate the asteroid belt's enemies
            var asteroidBelt = LevelDescriptor.GetAsteroidBelt(d.PlanetarySystem);

            if (asteroidBelt != null)
            {
                var enemies = EnemiesFactory.ToEnemyTypeList(asteroidBelt.Images);

                DescriptorInfiniteWaves v = new DescriptorInfiniteWaves()
                {
                    StartingDifficulty = 10,
                    DifficultyIncrement = 0,
                    MineralsPerWave = 0,
                    MinMaxEnemiesPerWave = new Vector2(10, 30),
                    Enemies = enemies,
                    FirstOneStartNow = true,
                    Upfront = true,
                    NbWaves = 10
                };

                d.InfiniteWaves = v;
            }

            var pinkHolesToAdd = new List<CelestialBodyDescriptor>();

            // switch some planets for pink holes
            for (int i = d.PlanetarySystem.Count - 1; i > -1; i--)
            {
                var cb = d.PlanetarySystem[i];

                if (!cb.Name.StartsWith("World"))
                    continue;

                var pinkHole = d.CreatePinkHole(cb.Position, cb.Name, (int) cb.Speed, cb.PathPriority);
                pinkHole.AddTurret(TurretType.Gravitational, 1, new Vector3(1, -2, 0), false, false);

                pinkHolesToAdd.Add(pinkHole);

                d.PlanetarySystem.RemoveAt(i);
            }

            foreach (var pink in pinkHolesToAdd)
                d.PlanetarySystem.Add(pink);

        }
コード例 #4
0
        private void LoadMenuDescriptor()
        {
            Menu = LoadLevelDescriptor(DescriptorsDirectory + @"\menu.xml");

            var newGame = Menu.PlanetarySystem[6];

            newGame.Name = "save the world";
            newGame.AddTurret(TurretType.Basic, 5, new Vector3(10, -14, 0), true, false);
            newGame.Invincible = true;

            var options = Menu.PlanetarySystem[1];
            options.Name = "options";
            options.AddTurret(TurretType.Basic, 2, new Vector3(-20, -5, 0), true, false);
            options.AddTurret(TurretType.MultipleLasers, 4, new Vector3(12, 0, 0), true, false);

            var editor = Menu.PlanetarySystem[2];
            editor.Name = "editor";
            editor.AddTurret(TurretType.Laser, 7, new Vector3(3, -7, 0), true, false);
            editor.AddTurret(TurretType.Missile, 3, new Vector3(-8, 0, 0), true, false);

            var quit = Menu.PlanetarySystem[3];
            quit.Name = "quit";

            var help = Menu.PlanetarySystem[4];
            help.Name = "how to play";
            help.AddTurret(TurretType.SlowMotion, 3, new Vector3(-10, -3, 0), true, false);

            var credits = Menu.PlanetarySystem[5];
            credits.Name = "credits";
            credits.AddTurret(TurretType.SlowMotion, 1, new Vector3(-10, -3, 0), true, false);


            DescriptorInfiniteWaves v = new DescriptorInfiniteWaves()
            {
                StartingDifficulty = 12,
                DifficultyIncrement = 0,
                MineralsPerWave = 0,
                MinMaxEnemiesPerWave = new Vector2(10, 30),
                Enemies = new List<EnemyType>() { EnemyType.Asteroid, EnemyType.Comet, EnemyType.Plutoid },
                FirstOneStartNow = true,
                Upfront = true,
                NbWaves = 10
            };

            var asteroidBelt = LevelDescriptor.GetAsteroidBelt(Menu.PlanetarySystem);

            asteroidBelt.Images = new List<string>() { "Asteroid", "Plutoid", "Comet", "Centaur", "Trojan", "Meteoroid" };


            Menu.InfiniteWaves = v;
        }