Beispiel #1
0
    /// <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);
    }
Beispiel #2
0
 /// <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));
     }
 }
Beispiel #3
0
    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);
    }
Beispiel #4
0
    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);
    }