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); } }
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); }
public void DrawHand() { int drawCount = maxDrawCount - hand.Count; for (int i = 0; i < drawCount; i++) { Card drawnCard = DrawCard(); hand.Add(drawnCard); } OnHandUpdated?.Invoke(); }
public void DiscardHand() { for (int i = 0; i < hand.Count; i++) { if (hand[i] != null) { AddToDiscardPile(hand[i]); } } hand.Clear(); OnHandUpdated?.Invoke(); }
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(); }