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; }
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); } } }
public bool TryDoOrder(ref ZergBase zerg) { return zerg.TryBuildExtractor(KeyGenerator.GetKey); }
public bool TryDoOrder(ref ZergBase zerg) { return zerg.TryBuildBasicArmyUnit<Roach>(KeyGenerator.GetKey, ZergUnitSettings.Roach); }
public bool TryDoOrder(ref ZergBase zerg) { return zerg.TryBuildAdvancedArmyUnit<Baneling>(KeyGenerator.GetKey, ZergUnitSettings.Bane); }
public bool TryDoOrder(ref ZergBase zerg) { return zerg.TryBuildOverlord(KeyGenerator.GetKey); }
public bool TryDoOrder(ref ZergBase zerg) { return zerg.TryBuildDrone<GasDrone>(KeyGenerator.GetKey); }
public bool TryDoOrder(ref ZergBase zerg) { return TryBuild<RoachWaren>(ref zerg, ZergBuildingSettings.RoachWaren, typeof(SpawningPool)); }
public bool TryDoOrder(ref ZergBase zerg) { return zerg.TryUpgrade(KeyGenerator.GetKey, ZergUpgradeSettings.LingSpeed); }
public bool TryDoOrder(ref ZergBase zerg) { return TryBuild<SpawningPool>(ref zerg, ZergBuildingSettings.SpawningPool, typeof(Hatchery)); }
public bool TryDoOrder(ref ZergBase zerg) { return zerg.TryBuildAdvancedArmyUnit<Raveger>(KeyGenerator.GetKey, ZergUnitSettings.Raveger); }
public bool TryDoOrder(ref ZergBase zerg) { return TryBuild<EvolutionChamber>(ref zerg, ZergBuildingSettings.EvolutionChamber, typeof (SpawningPool)); }