123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- using System;
- using UnityEngine;
- public class PlayerHand : Hand
- {
- public bool IsWin { get; private set; }
- public bool IsEven { get; private set; }
- public override void ResetHand()
- {
- base.ResetHand();
- this.IsHit = false;
- this.IsWin = false;
- this.IsEven = false;
- this.m_IsStand = false;
- this.IsDoubleDown = false;
- this.IsSurrender = false;
- }
- public void Stand()
- {
- this.m_IsStand = true;
- }
- public bool DoubleDownWin()
- {
- return this.IsDoubleDown && this.IsWin;
- }
- public bool CanHit()
- {
- return base.CurrentScore > 0 && !this.IsEnded();
- }
- public bool IsEnded()
- {
- return base.CurrentScore > 20 || this.m_IsStand || this.IsSurrender || this.m_TableCards.Count >= 5;
- }
- private bool IsBjDraw(bool dealerBlackjack)
- {
- if (dealerBlackjack)
- {
- return this.IsNatural21();
- }
- return !this.IsNatural21();
- }
- public bool HasPush(int dealerScore, bool dealerBlackjack)
- {
- return this.IsEnded() && base.CurrentScore == dealerScore && this.IsBjDraw(dealerBlackjack) && !base.IsBust();
- }
- public bool HasLost(int dealerScore, bool dealerBlackjack)
- {
- return (dealerScore > base.CurrentScore && dealerScore < 22) || dealerBlackjack;
- }
- public bool DoubleDownAvailable()
- {
- return this.m_TableCards.Count == 2;
- }
- public bool SplitAvailable()
- {
- return !this.IsEnded() && this.m_TableCards.Count == 2 && this.m_HandCardData[this.m_TableCards[0]].CardData.CardRank == this.m_HandCardData[this.m_TableCards[1]].CardData.CardRank;
- }
- public bool IsNatural21()
- {
- if (this.m_TableCards.Count != 2)
- {
- return false;
- }
- bool flag = this.m_HandCardData[this.m_TableCards[0]].CardData.GetValue() + this.m_HandCardData[this.m_TableCards[1]].CardData.GetValue() == 11;
- bool flag2 = this.m_HandCardData[this.m_TableCards[0]].CardData.CardRank == CardData.Rank.Ace || this.m_HandCardData[this.m_TableCards[1]].CardData.CardRank == CardData.Rank.Ace;
- return flag && flag2 && !BjPlayer.Instance.IsSplitGame();
- }
- public GameObject TakeCard(int index)
- {
- GameObject result = this.m_TableCards[index];
- this.m_TableCards.RemoveAt(index);
- base.CalculateScore();
- return result;
- }
- public void StartSplit(GameObject card)
- {
- if (!this.m_HandCardData.ContainsKey(card))
- {
- this.m_HandCardData.Add(card, card.GetComponent<Card>());
- }
- card.transform.SetParent(base.transform, false);
- card.transform.localPosition = BjPlayer.Instance.standardHand.GetCardObj(0).transform.localPosition;
- base.AddCardToHand(card);
- }
- public bool CanSurrender()
- {
- return this.m_TableCards.Count == 2 && !this.IsSurrender && !this.IsNatural21();
- }
- public void ShowOutcome(int dealerScore, bool dealerBlackjack)
- {
- if (this.IsEnded())
- {
- this.IsWin = (!this.IsSurrender && !base.IsBust() && ((!dealerBlackjack && this.IsNatural21()) || base.CurrentScore > dealerScore || dealerScore > 21));
- this.IsEven = (!this.IsSurrender && !base.IsBust() && this.HasPush(dealerScore, dealerBlackjack));
- }
- }
- public GameObject GetCardObj(int index)
- {
- return this.m_TableCards[index];
- }
- private const int m_CardMax = 5;
- [HideInInspector]
- public bool IsDoubleDown;
- private bool m_IsStand;
- [SerializeField]
- [Header("スプリット用の手番かどうか")]
- private bool m_IsSplitHand;
- [HideInInspector]
- public bool IsHit;
- [HideInInspector]
- public bool IsSurrender;
- }
|