Exemple #1
0
    public void SpendCard(int spentIndex)
    {
        // Random for testing...
        //int spentIndex = Random.Range(0, hand.Count);

        if (hand[spentIndex] != null && CanActivate(spentIndex))
        {
            Card spentCard = hand[spentIndex];

            pc.Energy -= spentCard.energyCost;

            AddToDiscardPile(hand[spentIndex]);

            hand[spentIndex] = null;

            spentCard.Activate();

            OnHandUpdated?.Invoke();

            AudioManager.PlaySFX(activateCardSound);
        }
        else
        {
            AudioManager.PlaySFX(activateNoEnergySound);
        }
    }
Exemple #2
0
    public Card DrawCard()
    {
        Card drawnCard = null;

        if (availableCards.Count > 0)
        {
            int randomIndex = Random.Range(0, availableCards.Count);

            drawnCard = availableCards[randomIndex];

            availableCards.RemoveAt(randomIndex);

            OnHandUpdated?.Invoke();
        }
        else
        {
            ShuffleDeck();

            int randomIndex = Random.Range(0, availableCards.Count);

            drawnCard = availableCards[randomIndex];

            availableCards.RemoveAt(randomIndex);

            OnHandUpdated?.Invoke();
        }
        return(drawnCard);
    }
Exemple #3
0
    public void DrawHand()
    {
        int drawCount = maxDrawCount - hand.Count;

        for (int i = 0; i < drawCount; i++)
        {
            Card drawnCard = DrawCard();
            hand.Add(drawnCard);
        }

        OnHandUpdated?.Invoke();
    }
Exemple #4
0
    public void DiscardHand()
    {
        for (int i = 0; i < hand.Count; i++)
        {
            if (hand[i] != null)
            {
                AddToDiscardPile(hand[i]);
            }
        }

        hand.Clear();

        OnHandUpdated?.Invoke();
    }
Exemple #5
0
    public void ShuffleDeck()
    {
        // Maybe move this out so it's more generic
        availableCards.Clear();

        foreach (Card discardedCard in discardedCards)
        {
            availableCards.Add(discardedCard);
        }

        discardedCards.Clear();

        // Probably doesnt need to actually be shuffled if we make sure we are drawing at random
        for (int i = 0; i < availableCards.Count; i++)
        {
            Card temp        = availableCards[i];
            int  randomIndex = Random.Range(i, availableCards.Count);
            availableCards[i]           = availableCards[randomIndex];
            availableCards[randomIndex] = temp;
        }

        OnHandUpdated?.Invoke();
    }