private void StartDealerTurn() { // unhide dealer's first card Card hiddenCard = dealer.scorerData.hands[0].handCards[0]; hiddenCard.cardData.isHidden = false; Sprite cardSprite; if (GetCardSprite(hiddenCard.cardData.suit, hiddenCard.cardData.rank, out cardSprite)) { hiddenCard.Initialize(cardSprite, hiddenCard.cardData); } dealer.UpdateScore(); // dealer must keep drawing cards when score is below 17 while (dealer.scorerData.hands[0].score < 17) { DealCard(dealer, false); dealer.UpdateScore(); } if (dealer.scorerData.hands[0].score <= 21) { dealer.SetHandState(HandState.Stand); } }
private void DealCard(Scorer scorer, bool isHidden) { CardData cardData; if (deck.GetTopCard(out cardData)) { cardData.isHidden = isHidden; Sprite cardSprite = backsideSprite; if (isHidden || GetCardSprite(cardData.suit, cardData.rank, out cardSprite)) { Card card = cardPool.Create(Vector3.zero, Quaternion.identity); card.Initialize(cardSprite, cardData); scorer.AddCard(card); cardsDealt.Add(card); } } }