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); }