コード例 #1
0
    private CardCopies GetValidCard()
    {
        CardCopies cardCopies  = GetCard();
        int        attempts    = 1;
        int        maxAttempts = Constants.instance.loopLimit;

        while (!cardCopies.card.CanDraw() && attempts < maxAttempts)
        {
            cardCopies = GetCard();
            attempts++;
            // Don't throw card out -- if it's a random effect card, its effects may be different on a redraw

            /*
             * if (!cardCopies.card.CanDraw()) {
             *  ThrowOutCardCopies(cardCopies);
             * }
             */
        }
        if (attempts == maxAttempts)
        {
            Debug.LogWarning("Max attempts reached while trying to draw a card.");
        }
        cardCopies.card.OnDraw();
        return(cardCopies);
    }
コード例 #2
0
    private CardCopies GetCard()
    {
        int        rand       = Random.Range(0, _deckSize);
        CardCopies cardCopies = GetCardCopiesFromIndex(rand);

        if (cardCopies.card is TransformingCard)
        {
            cardCopies = new CardCopies(((TransformingCard)cardCopies.card).ApplyTransformation(), cardCopies.copies);
        }
        cardCopies.card.OnPeek();
        return(cardCopies);
    }
コード例 #3
0
    // Returns a random card from this deck. Set allowDuplicates to false to throw out all cards of the same type after drawing.
    public Card DrawCard(bool allowDuplicates = true)
    {
        if (!_deckCounted)
        {
            SetDeckSize();
        }
        CardCopies cardCopies = GetValidCard();

        if (!allowDuplicates)
        {
            ThrowOutCardCopies(cardCopies);
        }
        return(cardCopies.card);
    }
コード例 #4
0
 private void ThrowOutCardCopies(CardCopies cardCopies)
 {
     _deckSize -= cardCopies.copies;
     composition.Remove(cardCopies);
 }