public InfiniteWave(Simulator simulator, DescriptorInfiniteWaves descriptor) { Simulator = simulator; Descriptor = descriptor; NbWavesAsked = 0; ActualDifficulty = Descriptor.StartingDifficulty - Descriptor.DifficultyIncrement; }
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; } }
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); }
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; }