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;
            }
        }
示例#2
0
        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);
        }
示例#3
0
 public static void ProcessFactoryStates()
 {
     foreach (var factory in factories)
     {
         factory.states = FactoryState.CalculateFactoryState(factory, factory.incoming, false);
     }
 }
示例#4
0
        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);
        }