private static void GeneratePackedHomogene(WaveDescriptor description, int qty)
 {
     description.Distance = Distance.Near;
     description.SwitchEvery = qty / Main.Random.Next(5, 10);
     description.Delay = Main.Random.Next(4000, 8000);
     description.ApplyDelayEvery = description.SwitchEvery;
 }
 private static void GenerateHomogene(WaveDescriptor description)
 {
     description.Distance = Distances[Main.Random.Next(2, Distances.Count)];
     description.SwitchEvery = -1;
     description.Delay = 0;
     description.ApplyDelayEvery = -1;
 }
 private static void GenerateDistinctsWhichFollow(WaveDescriptor description, int qty, int enemiesCount)
 {
     description.Distance = Distances[Main.Random.Next(2, Distances.Count)];
     description.SwitchEvery = qty / enemiesCount;
     description.Delay = Main.Random.Next(2000, 4000);
     description.ApplyDelayEvery = description.SwitchEvery;
 }
        public static WaveDescriptor Generate(int difficulty, int qty, List<EnemyType> enemies)
        {
            //StartingTime = 0;
            //Enemies = new List<EnemyType>();
            //CashValue = 1;
            //Distance = Distance.Joined;
            //Delay = 0;
            //ApplyDelayEvery = -1;
            //SwitchEvery = -1;

            var result = new WaveDescriptor()
            {
                LivesLevel = difficulty,
                SpeedLevel = difficulty,
                Quantity = qty,
                Enemies = enemies
            };

            switch (Main.Random.Next(0, 3))
            {
                case 0: GenerateHomogene(result); break;
                case 1: GenerateDistinctsWhichFollow(result, qty, enemies.Count); break;
                case 2: GeneratePackedHomogene(result, qty); break;
            }

            return result;
        }
Beispiel #5
0
        public Wave(Simulator simulator, WaveDescriptor descriptor)
        {
            Simulator = simulator;
            Descriptor = descriptor;

            NewEnemies = new List<Enemy>();
        }
Beispiel #6
0
        public void Sync(WaveDescriptor descriptor)
        {
            StartingTime.Value = (int) descriptor.StartingTime / 1000;
            Enemies.Sync(descriptor.Enemies);
            Level.Value = descriptor.LivesLevel;
            CashValue.Value = descriptor.CashValue;
            QuantityWidget.Value = descriptor.Quantity;

            Distance = descriptor.Distance;
            Delay = (int) (descriptor.Delay / 1000);
            ApplyDelayEvery = descriptor.ApplyDelayEvery;
            SwitchEvery = descriptor.SwitchEvery;
        }
        public static LevelDescriptor GetPerformanceTestDescriptor()
        {
            LevelDescriptor d = new LevelDescriptor();

            CelestialBodyDescriptor c;
            WaveDescriptor v;

            d.Player.Lives = 1;
            d.Player.Money = 100;

            d.Infos.Background = "background14";

            for (int i = 0; i < 6; i++)
            {
                c = new CelestialBodyDescriptor();
                c.Name = i.ToString();
                c.Path = new Vector3(150, 100, 0);
                c.StartingPosition = (int) (i * 14f);
                c.Size = Size.Small;
                c.Speed = 120000;
                c.Image = "stationSpatiale1";
                c.PathPriority = 30 - i;
                c.Invincible = true;

                c.AddTurret(TurretType.Gravitational, 1, new Vector3(-6, 0, 0));
                c.AddTurret(TurretType.Basic, 10, new Vector3(0, 6, 0));
                c.AddTurret(TurretType.Basic, 10, new Vector3(0, -6, 0));

                d.PlanetarySystem.Add(c);
            }

            d.Objective.CelestialBodyToProtect = d.PlanetarySystem[0].PathPriority;

            for (int i = 0; i < 8; i++)
            {
                c = new CelestialBodyDescriptor();
                c.Name = (i+8).ToString();
                c.Path = new Vector3(300, 200, 0);
                c.StartingPosition = (int)(i * 11f);
                c.Size = Size.Small;
                c.Speed = 120000;
                c.Image = "stationSpatiale2";
                c.PathPriority = 24 - i;
                c.Invincible = true;

                c.AddTurret(TurretType.Gravitational, 1, new Vector3(-6, 0, 0));
                c.AddTurret(TurretType.MultipleLasers, 10, new Vector3(0, 6, 0));
                c.AddTurret(TurretType.MultipleLasers, 10, new Vector3(0, -6, 0));

                d.PlanetarySystem.Add(c);
            }

            for (int i = 0; i < 16; i++)
            {
                c = new CelestialBodyDescriptor();
                c.Name = (i+16).ToString();
                c.Path = new Vector3(450, 300, 0);
                c.StartingPosition = (int)(i * 5f);
                c.Size = Size.Small;
                c.Speed = 120000;
                c.Image = "stationSpatiale1";
                c.PathPriority = 16 - i;
                c.Invincible = true;

                c.AddTurret(TurretType.Gravitational, 1, new Vector3(-6, 0, 0));
                c.AddTurret(TurretType.Basic, 10, new Vector3(0, 6, 0));
                c.AddTurret(TurretType.Basic, 10, new Vector3(0, -6, 0));

                d.PlanetarySystem.Add(c);
            }


            c = new CelestialBodyDescriptor();
            c.Name = "1111";
            c.Path = new Vector3(700, -400, 0);
            c.Speed = 320000;
            c.Size = Size.Small;
            c.Images.Add("Asteroid");
            c.Images.Add("Plutoid");
            c.Images.Add("Comet");
            c.Images.Add("Centaur");
            c.Images.Add("Trojan");
            c.Images.Add("Meteoroid");
            c.PathPriority = 0;
            c.CanSelect = true;

            d.PlanetarySystem.Add(c);

            v = new WaveDescriptor();
            v.Enemies = new List<EnemyType>() { EnemyType.Plutoid };
            v.LivesLevel = 150;
            d.Waves.Add(v);

            v = new WaveDescriptor();
            v.Enemies = new List<EnemyType>() { EnemyType.Comet };
            v.LivesLevel = 150;
            v.Quantity = 100;
            d.Waves.Add(v);

            v = new WaveDescriptor();
            v.Enemies = new List<EnemyType>() { EnemyType.Meteoroid };
            v.LivesLevel = 150;
            v.Quantity = 100;
            d.Waves.Add(v);

            return d;
        }
 public void DoNextWaveCompositionChanged(WaveDescriptor composition)
 {
     StartingPathMenu.NextWaveComposition = composition;
     GameBarPanel.NextWaveComposition = composition;
 }
Beispiel #9
0
 public void SetWaveDescriptors(WaveDescriptor[] waveDescriptors)
 {
     m_waveDescriptors = waveDescriptors;
 }