/// <summary> /// Check do we need Second tieBreaker, for two pair & full house /// </summary> /// <returns></returns> public bool DoWeSeccondTieBracker(HandRankPoker _rank) { if (_rank == HandRankPoker.fullHouse || _rank == HandRankPoker.twoPairs) { return(true); } else { return(false); } }
/// <summary> /// Check do we need tieBreaker, for all except royal flush /// </summary> /// <returns></returns> public bool DoWeTieBracker(HandRankPoker _rank) { if (_rank == HandRankPoker.royalFlush) { return(false); } else { return(true); } }
/// <summary> /// Check do we need kicker, only for pair, triple /// </summary> /// <returns></returns> public bool DoWeNeedSecondKicker(HandRankPoker _rank) { if (_rank == HandRankPoker.onePair || _rank == HandRankPoker.threeOfaKind) { return(true); } else { return(false); } }
/// <summary> /// Check do we need kicker, only for pair, 2 pairs, triple, four of a kind /// </summary> /// <returns></returns> public bool DoWeNeedKicker(HandRankPoker _rank) { if (_rank == HandRankPoker.onePair || _rank == HandRankPoker.twoPairs || _rank == HandRankPoker.threeOfaKind || _rank == HandRankPoker.fourOfAKind || _rank == HandRankPoker.flush) { return(true); } else { return(false); } }
/// <summary> /// Hand value : 2 pairs ,one pair etc. /// </summary> /// <returns></returns> public HandRankPoker MaxRankeInTable(_PlayerPokerActor[] _players) { HandRankPoker MaxHand = HandRankPoker.none; foreach (_PlayerPokerActor p in _players) { if (p._playerHandRank > MaxHand)//&& p.playerState != _PlayerPokerActor.PlayerState.fold) { MaxHand = p._playerHandRank; } } return(MaxHand); }
public void SetMyInfoRank() { if (!PhotonUtility.GetPlayerProperties <bool>(myPlayer, PhotonEnums.Player.Active)) { return; } if (imgHandRank == null) { panelTxtRankHand.SetActive(true); } else { imgHandRank.gameObject.SetActive(true); } System.Collections.Generic.List <_CardActor> a = new System.Collections.Generic.List <_CardActor>(); foreach (_CardActor ca in _PokerGameManager.instance.tableCard) { if (ca.gameObject.activeSelf) { a.Add(ca); } } if (a.Count >= 2) { HandRankPoker hrp = _PokerGameManager.cardManager.EvaluatPlayerHand(a.ToArray(), _myHandCard); if (imgHandRank == null) { txtHandRank.text = hrp.ToString(); } else { switch (hrp) { case HandRankPoker.highCard: imgHandRank.sprite = PokerManager.instance.sprHighCard; break; case HandRankPoker.onePair: imgHandRank.sprite = PokerManager.instance.sprOnePair; break; case HandRankPoker.twoPairs: imgHandRank.sprite = PokerManager.instance.sprTwoPair; break; case HandRankPoker.threeOfaKind: imgHandRank.sprite = PokerManager.instance.sprThrice; break; case HandRankPoker.fourOfAKind: imgHandRank.sprite = PokerManager.instance.sprQuad; break; case HandRankPoker.straight: imgHandRank.sprite = PokerManager.instance.sprStraight; break; case HandRankPoker.flush: imgHandRank.sprite = PokerManager.instance.sprFlush; break; case HandRankPoker.fullHouse: imgHandRank.sprite = PokerManager.instance.sprFullHouse; break; case HandRankPoker.straightFlush: imgHandRank.sprite = PokerManager.instance.sprStraightFlush; PokerManager.instance.bStraightFlush = true; break; case HandRankPoker.royalFlush: imgHandRank.sprite = PokerManager.instance.sprRoyalFlush; PokerManager.instance.bRoyalFlush = true; break; } } } }
public void StartInitialize(int _slot, bool _flagMine, bool _isBot = false) { forceFold = false; isBot = _isBot; slotIndex = _slot; isMine = _flagMine; totalBet = 0; //ActivateInviteButton(false); chatItem.SetActive(false); foreach (Image i in imgBetAmount) { i.sprite = PokerManager.instance.sprCoin; } ExitGames.Client.Photon.Hashtable properties = myPlayer.CustomProperties; #region change name & picture & Avatar 3D _myName = (string)properties[PhotonEnums.Player.Name]; myMoney = (long)properties[PhotonEnums.Player.Money]; txtName.text = _myName; txtMyMoney.text = myMoney.toFlexibleCurrency(); //Load Avatar 3D if (isMine && !isBot) { //avatarEquiped = DataManager.instance.hero.id; heroUsed = PlayerData.costume_id; } else { heroUsed = PhotonUtility.GetPlayerProperties <int> (myPlayer, PhotonEnums.Player.ContentURL); } //hero.LoadSpine (heroUsed, isMine && !isBot); hero.LoadFromBundle(heroUsed, isMine && !isBot); #endregion _playerHandRank = (HandRankPoker)((int)properties[PhotonEnums.Player.HandRank]); RANK = (int)properties[PhotonEnums.Player.RankPoker]; valueHand = (int)properties[PhotonEnums.Player.ValueHand]; secondValueHand = (int)properties[PhotonEnums.Player.SecondValueHand]; _kicker = (int)properties[PhotonEnums.Player.Kicker]; secondKicker = (int)properties[PhotonEnums.Player.SecondKicker]; totalBet = (long)properties[PhotonEnums.Player.TotalBet]; chipsBet = (long)properties[PhotonEnums.Player.ChipsBet]; string strCard = (string)properties[PhotonEnums.Player.Cards]; if (strCard != "") { string[] cardTypes = strCard.Split(','); this.cardTypes = cardTypes; InstallHandCard(int.Parse(cardTypes[0]), int.Parse(cardTypes[1])); } if (isBot) { if (PhotonTexasPokerManager.instance.botCount == 0) { PhotonTexasPokerManager.instance.SyncBot(); } } UpdateUIPlayer(); }
/// <summary> /// Setup The Ranks /// </summary> public void SetupRanks() { List <_PlayerPokerActor> playersOnTable = new List <_PlayerPokerActor>(); playersOnTable.AddRange(_PokerGameManager.turnManager.matchPlayers); int loop = playersOnTable.Count; int rank = 1; foreach (_PlayerPokerActor player in playersOnTable) { player._playerHandRank = EvaluatPlayerHand(_PokerGameManager.instance.tableCard, player._myHandCard); player._myHighlightedCard = cardCounter.CardHighlight; player._kicker = cardCounter.kickerValue; player.secondKicker = cardCounter.secondKickerValue; player.valueHand = cardCounter.tieBrakerValue; player.secondValueHand = cardCounter.secondTieBrakerValue; } for (int x = loop; x > 0; x--) { if (playersOnTable.Count == 0) { break; } List <_PlayerPokerActor> tmpwinners = new List <_PlayerPokerActor>(); List <_PlayerPokerActor> Winners = new List <_PlayerPokerActor>(); HandRankPoker winningHand = MaxRankeInTable(playersOnTable.ToArray());//Hand Val Max int _kickerCard = -1; int _secKickerCard = -1; int _tieBreaker = -1; int _secTieBreaker = -1; foreach (_PlayerPokerActor p in playersOnTable) { if (p._playerHandRank == winningHand) { tmpwinners.Add(p); } } if (tmpwinners.Count > 1) { if (DoWeTieBracker(winningHand)) { List <_PlayerPokerActor> winnersTie = new List <_PlayerPokerActor>(); _tieBreaker = MaxTieBreaker(tmpwinners.ToArray());//Max total value in numbers foreach (_PlayerPokerActor p in tmpwinners) { if (p.valueHand == _tieBreaker) { winnersTie.Add(p); } } tmpwinners.Clear(); tmpwinners.AddRange(winnersTie); } if (DoWeSeccondTieBracker(winningHand)) { List <_PlayerPokerActor> winnersTie = new List <_PlayerPokerActor>(); _secTieBreaker = MaxSecondTieBreaker(tmpwinners.ToArray());//Max total value in numbers foreach (_PlayerPokerActor p in tmpwinners) { if (p.secondValueHand == _secTieBreaker) { winnersTie.Add(p); } } tmpwinners.Clear(); tmpwinners.AddRange(winnersTie); } if (DoWeNeedKicker(winningHand)) { List <_PlayerPokerActor> winnersKicker = new List <_PlayerPokerActor>(); _kickerCard = MaxKickerValue(tmpwinners.ToArray());//Max total value in numbers foreach (_PlayerPokerActor p in tmpwinners) { if (p._kicker == _kickerCard) { winnersKicker.Add(p); } } tmpwinners.Clear(); tmpwinners.AddRange(winnersKicker); } if (DoWeNeedSecondKicker(winningHand)) { List <_PlayerPokerActor> winnersKicker = new List <_PlayerPokerActor>(); _secKickerCard = MaxSecKickerValue(tmpwinners.ToArray());//Max total value in numbers foreach (_PlayerPokerActor p in tmpwinners) { if (p.secondKicker == _secKickerCard) { winnersKicker.Add(p); } } tmpwinners.Clear(); tmpwinners.AddRange(winnersKicker); } Winners.AddRange(tmpwinners); int numWinners = Winners.Count; foreach (_PlayerPokerActor p in Winners) { //p.PullTheChips(_mainPot / Winners.Count); p.RANK = rank; //Debug.LogError("player " + p.name + " : " + Winners.Count); playersOnTable.Remove(p); } } else { //Debug.LogError("player " + tmpwinners[0].name + " : 1"); tmpwinners[0].RANK = rank; playersOnTable.Remove(tmpwinners[0]); //tmpwinners[0].PullTheChips((int)_mainPot); } rank++; } }