public override MoveStepActionData ExecuteAction(BotMoveState moveState)
        {
            var caravanRef = _ordinalSuffixResolver.GetOrdinalSuffixWithInput(moveState.CurrentCaravanIdToMove);

            return(new MoveStepActionData($"Please remove my {caravanRef} trade caravan from the city and return it to my supply in preperation for its next journey",
                                          new List <string>()));
        }
Beispiel #2
0
        // TODO: we only need to ask this if we had culture trade tokens available - so we can determine if they were used or not!

        public override MoveStepActionData ExecuteAction(BotMoveState moveState)
        {
            var caravanRef = _ordinalSuffixResolver.GetOrdinalSuffixWithInput(moveState.CurrentCaravanIdToMove);
            var tradeTokensAtStartOfTurn = moveState.TradeTokensAvailable[FocusType.Economy] - moveState.TradeCaravansAvailable.Sum(x => x.Value.EconomyTokensUsedThisTurn);
            var maxMoves = moveState.BaseCaravanMoves + tradeTokensAtStartOfTurn;
            var options  = Array.ConvertAll(Enumerable.Range(0, maxMoves + 1).ToArray(), ele => ele.ToString());

            return(new MoveStepActionData($"How many spaces did you manage to move my {caravanRef} trade caravan in total?",
                                          options));
        }
Beispiel #3
0
        public override MoveStepActionData ExecuteAction(BotMoveState moveState)
        {
            var caravanRef = _ordinalSuffixResolver.GetOrdinalSuffixWithInput(moveState.CurrentCaravanIdToMove);

            return(new MoveStepActionData($"Which type of destination did my {caravanRef} trade caravan arrive at?",
                                          new List <string>()
            {
                "1. On Route", "2. City State", "3. Rival City"
            }));
        }
Beispiel #4
0
        public override MoveStepActionData ExecuteAction(BotMoveState moveState)
        {
            // TODO: this lists all avilable city states - would be better if we can limit this list:
            //       to remove city states that are not in the current game
            //       currently hardwired for 2plyr prologue board!

            var caravanRef = _ordinalSuffixResolver.GetOrdinalSuffixWithInput(moveState.CurrentCaravanIdToMove);
            var cityStates = _globalGameCache.CityStates.Select(x => $"{x.Id}. {x.Name}").ToList();

            return(new MoveStepActionData($"Which city state did my {caravanRef} trade caravan arrive at?",
                                          cityStates));
        }
        public override MoveStepActionData ExecuteAction(BotMoveState moveState)
        {
            // TODO: we need players and colors
            //       currently hard wired

            var caravanRef  = _ordinalSuffixResolver.GetOrdinalSuffixWithInput(moveState.CurrentCaravanIdToMove);
            var playerColor = new List <string> {
                "1. Red", "2. Green", "3. Blue", "4. White"
            };

            return(new MoveStepActionData($"Which rival city color did my {caravanRef} trade caravan arrive at?",
                                          playerColor));
        }
        public override MoveStepActionData ExecuteAction(BotMoveState moveState)
        {
            // TODO: would e useful to show some detail on the priority based on move state
            //       e.g. if the bot has already visited all city states then we can remove that from option list
            //       e.g. for each priotiy option that is still applicable - we can show whats left to visit
            //              for city state: brussels, carthage...
            //              for rival city: red...
            //              for visited city state: buenos ares...

            if (moveState.CurrentCaravanIdToMove < moveState.SupportedCaravanCount)
            {
                moveState.CurrentCaravanIdToMove++;
            }
            var caravanRef     = _ordinalSuffixResolver.GetOrdinalSuffixWithInput(moveState.CurrentCaravanIdToMove);
            var maxSpacesMoved = moveState.BaseCaravanMoves + moveState.TradeTokensAvailable[FocusType.Economy];
            var watertext      = moveState.CanMoveOnWater ? "making use of water tiles where needed" : "avoiding the use of water tiles";

            return(new MoveStepActionData($"Please move my {caravanRef} trade caravan {maxSpacesMoved} spaces toward its destination, taking the shortest path {watertext}, using the following destination priority rules:\nUnvisited City State\nRival City\nVisited City State",
                                          new List <string>()));
        }