/* Is it a legal move to add the card to this row? */ protected virtual Boolean CanAddCard(InGameCard card) { return(card != null && card.combatTypes.Contains(this.combatType) && ((!card.IsSpy() && player == Player.Us) || (card.IsSpy() && player == Player.Them))); }
public IPromise <IList <TurnEvent> > PlayCardFromDiscardPile(DisplayCard displayCard) { InGameCard card = ourDiscardPile.PopCardById(displayCard.id); List <CombatType> eligibleCts = new List <CombatType> { CombatType.Melee, CombatType.Ranged, CombatType.Siege }; if (card.reviveRow == null) { throw new AddCardException( String.Format("{0} card is missing a revive row.", card.id) ); } else if (!eligibleCts.Contains(card.reviveRow.Value)) { throw new AddCardException( String.Format("{0} card has an ineligble revive row.", card.id) ); } CombatType reviveRow = card.reviveRow.Value; IPromise <IList <TurnEvent> > result; if (card.IsSpy()) { if (reviveRow == CombatType.Siege) { result = theirSiegeRow.AddCard(card); } else if (reviveRow == CombatType.Ranged) { result = theirRangedRow.AddCard(card); } else { result = theirMeleeRow.AddCard(card); } } else { if (reviveRow == CombatType.Melee) { result = ourMeleeRow.AddCard(card); } else if (reviveRow == CombatType.Ranged) { result = ourRangedRow.AddCard(card); } else { result = ourSiegeRow.AddCard(card); } } return(result); }