예제 #1
0
        public Card GetPreferredCardReverse(GameState gameState, CardPredicate cardPredicate)
        {
            for (int i = this.cardAcceptances.Length - 1; i >= 0; i--)
            {
                CardAcceptance acceptance = this.cardAcceptances[i];
                if (cardPredicate(acceptance.card) &&
                    acceptance.match(gameState))
                {
                    return(acceptance.card);
                }
            }

            return(null);
        }
        public Card GetPreferredCard(GameState gameState, CardPredicate cardPredicate)
        {
            var existingCards = gameState.Self.AllOwnedCards.Clone();

            int numberOfTries = 2;

            for (int index = 0; index < this.buildOrder.Length; ++index)
            {
                CardAcceptance acceptance = this.buildOrder[index];

                if (acceptance == null)
                {
                    continue;
                }

                if (!acceptance.match(gameState))
                {
                    continue;
                }

                Card currentCard = acceptance.card;

                if (existingCards.HasCard(currentCard))
                {
                    existingCards.RemoveCard(currentCard);
                    continue;
                }
                numberOfTries--;

                if (cardPredicate(currentCard))
                {
                    return(currentCard);
                }

                if (numberOfTries == 0)
                {
                    break;
                }
            }

            return(null);
        }