public void Solve() { Factory ally = mission.factory; SortedSet <Troop> mockTroops = new SortedSet <Troop>(ally.incoming); Troop testTroop = new Troop { start = ally, end = ally, count = 10, team = Team.Enemy, isAlly = false, isEnemy = true, turns = 1, endTime = Game.gameTime + 1, }; mockTroops.Add(testTroop); var mockStates = FactoryState.CalculateFactoryState(ally, mockTroops); //FactoryState lastState = mockStates.Last(); if (FactoryState.IsFactoryCaptured(mockStates) == false) { mission.successRating = MissionSuccessRating.Guaranteed; mission.acceptedMission.Add(testTroop); mission.missionEndTime = Game.gameTime + 1; } }
public static void AddAction(Action action, Troop troop = null) { if (action.move == MoveType.Move) { action.start.count -= action.numRobots; action.start.armyAvailable -= action.numRobots; if (troop != null && troop.inTransit == false) { action.end.incoming.Add(troop); action.end.states = FactoryState.CalculateFactoryState(action.end, action.end.incoming); } //Console.Error.WriteLine("Move " + action.start.id + "-" + action.end.id + ": " + troop.count); } else if (action.move == MoveType.Inc) { action.start.count -= 10; action.start.armyAvailable -= 10; } else if (action.move == MoveType.Bomb) { action.end.incoming.Add(troop); Game.bomb--; } Action.actions.Add(action); }
public static void ProcessFactoryStates() { foreach (var factory in factories) { factory.states = FactoryState.CalculateFactoryState(factory, factory.incoming, false); } }
public static FactoryState GetFactoryState(Factory factory, Troop testTroop) { SortedSet <Troop> mockTroops = new SortedSet <Troop>(factory.incoming); mockTroops.Add(testTroop); var states = FactoryState.CalculateFactoryState(factory, mockTroops); foreach (var state in states) { if (state.troop != null && state.troop.id == testTroop.id) { return(state); } } return(null); }