Пример #1
0
 /* 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)));
 }
Пример #2
0
    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);
    }