Esempio n. 1
0
        public bool TryDoOrder(ref ZergBase zerg)
        {
            var key = KeyGenerator.GetKey;
            var counter = zerg.Counters.Last();
            var actualTime = Math.Round((zerg.Counters.Count - 1) * CoreSettings.TimeStep, 3);
            if (_waitingForKey == 0 &&
                               counter.Minerals >= _moveOutMinerals)
            {

                zerg.MoveOutDrone(key, 0, typeof(MineralDrone), typeof(Hatchery));

                _waitingForKey = key;
                _drone = zerg.InProductions[key] as MovingDrone;
            }
            else if (_drone != null)
            {
                var inProduction = zerg.InProductions.ContainsKey(_waitingForKey)
                    ? zerg.InProductions[_waitingForKey]
                    : null;
                if (inProduction == null ||
                    inProduction.PromilleDone(actualTime) == (int)Percentage.P100)
                {
                    return zerg.TryBuildHatchery(key, _drone);
                }
            }
            return false;
        }
Esempio n. 2
0
        private static void RunProgram()
        {
            var totalSimulationTime = 380.0;
            var outputTimeStep = 2.0;
            var timeStep = CoreSettings.TimeStep;
            var zerg = new ZergBase(timeStep);
            System.Console.WriteLine("Time: " + (0.0).ToMinuteString() + ", Minerals: " +
                                            zerg.Counters.First().Minerals
                                            + ", Gas: " + zerg.Counters.First().Gas
                                            + ", Supply: " + zerg.Counters.First().Supply
                                            + "/" + zerg.Counters.First().SupplyLimit
                                            + ", Larvas: " + zerg.Counters.First().Larvas);
            var buildOrders = new List<IOrder>();
            buildOrders.AddRange(Openers.ZvZSafeRoachOpener());
            var indexMax = (int)(totalSimulationTime / CoreSettings.TimeStep);
            for (int i = 1; i < indexMax; i++)
            {
                zerg.StepForward();
                var counter = zerg.Counters.Last();
                var actualTime = i * timeStep;
                if (actualTime.ToMilliSeconds() % outputTimeStep.ToMilliSeconds() < timeStep.ToMilliSeconds())
                {
                    System.Console.WriteLine("Time: " + (actualTime).ToMinuteString() + ", Minerals: " +
                                             counter.Minerals
                                             + ", Gas: " + counter.Gas
                                             + ", Supply: " + counter.Supply
                                             + "/" + counter.SupplyLimit
                                             + ", Larvas: " + counter.Larvas);
                }

                var extractor = zerg.InProductions.FirstOrDefault(x => x.Value.Name == ZergBuildingSettings.Extractor.Name);

                if (extractor.Value != null && extractor.Value.PromilleDone(actualTime) == (int)Percentage.P100)
                {
                    var extractorObj = (Extractor) extractor.Value;
                    var hatchIndex = extractorObj.HatchIndex;
                    zerg.TryChangeDronesWork(hatchIndex, hatchIndex, typeof(MineralDrone), typeof(GasDrone), 0);
                    zerg.TryChangeDronesWork(hatchIndex, hatchIndex, typeof(MineralDrone), typeof(GasDrone), 0);
                    zerg.TryChangeDronesWork(hatchIndex, hatchIndex, typeof(MineralDrone), typeof(GasDrone), 0);
                }

                var buildOrder = buildOrders.FirstOrDefault(x => !x.IsDone);

                if (buildOrder != null)
                {
                    buildOrder.IsDone = buildOrder.TryDoOrder(ref zerg);
                }
            }
        }
Esempio n. 3
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return zerg.TryBuildExtractor(KeyGenerator.GetKey);
 }
Esempio n. 4
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return zerg.TryBuildBasicArmyUnit<Roach>(KeyGenerator.GetKey, ZergUnitSettings.Roach);
 }
Esempio n. 5
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return zerg.TryBuildAdvancedArmyUnit<Baneling>(KeyGenerator.GetKey, ZergUnitSettings.Bane);
 }
Esempio n. 6
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return zerg.TryBuildOverlord(KeyGenerator.GetKey);
 }
Esempio n. 7
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return zerg.TryBuildDrone<GasDrone>(KeyGenerator.GetKey);
 }
Esempio n. 8
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return TryBuild<RoachWaren>(ref zerg, ZergBuildingSettings.RoachWaren, typeof(SpawningPool));
 }
Esempio n. 9
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return zerg.TryUpgrade(KeyGenerator.GetKey, ZergUpgradeSettings.LingSpeed);
 }
Esempio n. 10
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return TryBuild<SpawningPool>(ref zerg, ZergBuildingSettings.SpawningPool, typeof(Hatchery));
 }
Esempio n. 11
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return zerg.TryBuildAdvancedArmyUnit<Raveger>(KeyGenerator.GetKey, ZergUnitSettings.Raveger);
 }
Esempio n. 12
0
 public bool TryDoOrder(ref ZergBase zerg)
 {
     return TryBuild<EvolutionChamber>(ref zerg, ZergBuildingSettings.EvolutionChamber, typeof (SpawningPool));
 }