/// <summary> /// Move Card To Hand /// </summary> public void MoveCardToSpot(Card card) { int handCount = m_SpotOccupant.GetHand().GetCardCount(); card.transform.SetParent(m_CardPivotPoint); StartCoroutine(MoveCardRoutine(card.transform, m_CardOffset * handCount)); m_SpotOccupant.GetHand().AddCardToHand(card); }
/// <summary> /// Set occupant of this spot /// </summary> public void SetSpotOccupant(BlackJackPlayer occupant) { m_SpotOccupant = occupant; m_PlayerCashAmount.gameObject.SetActive(true); m_PlayerBetAmount.gameObject.SetActive(true); m_SpotOccupant.onBetUpdated += RefreshBetAmount; m_SpotOccupant.onCashUpdated += RefreshCashAmount; m_SpotOccupant.GetHand().onHandUpdated += RefreshHandValue; if (m_HitButton) { m_HitButton.onClick.AddListener(() => m_SpotOccupant.DoAction(BlackJackPlayer.PlayerAction.Hit)); } if (m_StandButton) { m_StandButton.onClick.AddListener(() => m_SpotOccupant.DoAction(BlackJackPlayer.PlayerAction.Stand)); } if (m_DoubleDownButton) { m_DoubleDownButton.onClick.AddListener(() => m_SpotOccupant.DoAction(BlackJackPlayer.PlayerAction.DoubleDown)); } if (m_Surrender) { m_Surrender.onClick.AddListener(() => m_SpotOccupant.DoAction(BlackJackPlayer.PlayerAction.Surrender)); } }
private IEnumerator EndTurn() { int dealerCardValue = m_DealerPlayer.GetHand().GetHandValue(); HandStatus status = HandStatus.NONE; int playerHandValue = 0; BlackJackPlayer player = null; for (int pIndex = 0; pIndex < m_TableSpots.Length; pIndex++) { if (!m_TableSpots[pIndex].IsOccupied()) { continue; } player = m_TableSpots[pIndex].Occupant; playerHandValue = m_TableSpots[pIndex].Occupant.GetHand().GetHandValue(); if (player.GetHand().IsBlackjack()) { status = HandStatus.BJ; } else if (playerHandValue > 21) { status = HandStatus.BUST; } else if (playerHandValue == dealerCardValue) { status = HandStatus.PUSH; } else if (playerHandValue > dealerCardValue || dealerCardValue > 21) { status = HandStatus.WIN; } else { status = HandStatus.LOSE; } switch (status) { case HandStatus.PUSH: player.AddPlayerCash(player.GetBetAmount()); break; case HandStatus.BJ: player.AddPlayerCash((int)(player.GetBetAmount() * 2.5)); break; case HandStatus.WIN: player.AddPlayerCash(player.GetBetAmount() * 2); break; } m_TableSpots[pIndex].SetStatus(status); yield return(new WaitForSeconds(3)); } m_CurrentRoutine = null; SetGameState(GameState.RESET); }
private IEnumerator PlayerTurn() { BlackJackPlayer player = null; for (int sIndex = 0; sIndex < m_TableSpots.Length; sIndex++) { if (!m_TableSpots[sIndex].IsOccupied()) { continue; } m_TableSpots[sIndex].TogglePlayerCardAction(true); player = m_TableSpots[sIndex].Occupant; while (player.GetHand().GetHandValue() <= 21 && !player.Standed()) { yield return(null); } m_TableSpots[sIndex].TogglePlayerCardAction(false); } m_CurrentRoutine = null; SetGameState(GameState.DEALER_ACTION); }