public static void AddMissions() { var orderedFactories = Factory.factories .OrderByDescending(factory => factory.stats.allyScore * factory.oldProduction); foreach (var factory in orderedFactories) { //if the factory will always be ally's if (FactoryState.WillFactoryBeAlly(factory.states)) { if (factory.oldProduction < 3 && factory.armyAvailable >= 10) { Mission newMission = new Mission(MissionType.Inc, factory); missions.Add(newMission); } else if (factory.oldProduction < 3) { Mission newMission = new Mission(MissionType.IncSupport, factory); missions.Add(newMission); } } else { if (Game.bomb > 0 && Game.gameTime > 1) { Mission bombMission = new Mission(MissionType.Bomb, factory); missions.Add(bombMission); } if (factory.isAlly) { Mission newMission = new Mission(MissionType.Defend, factory); missions.Add(newMission); } else { Mission newMission = new Mission(MissionType.Capture, factory); missions.Add(newMission); } //double missionScore = factory.stats.allyScore * factory.oldProduction; //Console.Error.WriteLine(factory.id + ": " + missionScore); //return; } } }
public void AddPrereq(Troop troop) { Mission newMission = new Mission(MissionType.Capture, troop.end); HashSet <Troop> reqTroops; if (Strategy.curExecuted.Contains(newMission) || FactoryState.WillFactoryBeAlly(troop.end.states)) { return; //already cleared prereq } if (mission.prereqs.TryGetValue(newMission, out reqTroops)) { reqTroops.Add(troop); } else { mission.prereqs.Add(newMission, new HashSet <Troop> { troop }); } }
public static void AddMissions() { var orderedFactories = Factory.factories .OrderByDescending(factory => factory.stats.allyScore * factory.oldProduction); foreach (var factory in orderedFactories) { //if the factory will always be ally's if (factory.isAlly && FactoryState.WillFactoryBeAlly(factory.states)) { int nearbyEnemyThreatCount = factory.GetNearbyEnemyThreats(); if (nearbyEnemyThreatCount == 0) //&& Factory.globalStats.totalAllyCount - 10 >= (2*Factory.globalStats.totalEnemyCount/3.0)) { if (factory.oldProduction < 3 && factory.armyAvailable >= 10) { Mission newMission = new Mission(MissionType.Inc, factory); missions.Add(newMission); } else if (factory.oldProduction < 3) //send inc support before becoming ally's? { Mission newMission = new Mission(MissionType.IncSupport, factory); missions.Add(newMission); } } else { if (nearbyEnemyThreatCount > 0) { Mission newMission = new Mission(MissionType.Reinforce, factory); newMission.troopsNeeded = nearbyEnemyThreatCount; missions.Add(newMission); } } } else { if (Game.bomb > 0 && Game.gameTime > 0) { Mission bombMission = new Mission(MissionType.Bomb, factory); missions.Add(bombMission); } if (factory.isAlly) { Mission newMission = new Mission(MissionType.Defend, factory); missions.Add(newMission); } else { if (!FactoryState.WillFactoryBeAlly(factory.states)) { Mission newMission = new Mission(MissionType.Capture, factory); missions.Add(newMission); } } //double missionScore = factory.stats.allyScore * factory.oldProduction; //Console.Error.WriteLine(factory.id + ": " + missionScore); //return; } } }