Example #1
0
    /// 回合结束,下一回合
    private void nextRound()
    {
        int curIndex = -1;

        for (int i = 0; i < roomPlayers.Count; ++i)
        {
            if (curRoundPlayer == roomPlayers[i])
            {
                curIndex = i;
                break;
            }
        }
        curRoundPlayer = roomPlayers[(curIndex + 1) % roomPlayers.Count];
        roundStateEnum = RoundStateEnum.Ready;
    }
Example #2
0
    private void onFlipCard(CardControl control)
    {
        if (curFlipCard == null)
        {
            curFlipCard = control;
            curFlipCard.Flip();
            roundStateEnum = RoundStateEnum.FlipAnimal;
            chooseTime     = 0;

            // 如果是 驴,需要从银行各发[100]给玩家
            if (curFlipCard.cardData.GetData <Animals>().Id == RoomData.SendCoinCardId)
            {
                sendCoinForDonkey();
                sendCardControl.MoveCardPosEnum(curFlipCard.cardData.UUID, RoomCardPosEnum.WillDestroy);
                curFlipCard = null;
                nextRound();
                return;
            }

            List <PlayerControl> hasSameAnimalPlayers = getSameAnimalPlayers();
            if (hasSameAnimalPlayers.Count == 0)
            {
                curSaleEnum = SaleCardEnum.SaleAnimal;
            }
            else
            {
                // TODO 需要做成玩家选择使用那种方式拍卖
                curSaleEnum = Random.value < 0.5f ? SaleCardEnum.SaleAnimal : SaleCardEnum.BehindBusiness;
            }
            CustomDebug.Log("准备拍卖模式:" + curSaleEnum.ToString());
            if (curSaleEnum == SaleCardEnum.BehindBusiness)
            {
                behindBusinessPlayer = hasSameAnimalPlayers[Random.Range(0, hasSameAnimalPlayers.Count)];
            }
            else
            {
                // 通知其他玩家出价
                RoomData.CurBidPrice = 0;
                SignalManager.Instance.Create <NotifyBidSignal>().Dispatch();
            }
        }
        else
        {
            Debug.LogWarning("本回合已翻牌,无法继续翻牌");
        }
    }
Example #3
0
        public void OnbuttonPressed()
        {
            //print("End button pressed");
            button.interactable = false;
            //anim.Play();
            //button.interactable = false;
            //timerNumber.text = "00";
            switch (roundState)
            {
            case RoundStateEnum.PrepareState:
                FindObjectOfType <PrepareStateEvent>().RoundEndInvoke();
                roundState = RoundStateEnum.ProposalState;
                break;

            case RoundStateEnum.ProposalState:
                FindObjectOfType <ProposalStateEvent>().RoundEndInvoke();
                roundState = RoundStateEnum.NegociateState;
                break;

            case RoundStateEnum.NegociateState:
                FindObjectOfType <VoteState>().RoundEndInvoke();
                roundState = RoundStateEnum.VoteState;
                break;

            case RoundStateEnum.VoteState:
                FindObjectOfType <AccountState>().RoundEndInvoke();
                roundState = RoundStateEnum.AccountState;
                break;

            case RoundStateEnum.AccountState:
                FindObjectOfType <PrepareStateEvent>().RoundEndInvoke();
                roundState = RoundStateEnum.PrepareState;
                break;

            default:
                break;
            }
        }
Example #4
0
 private PokerGame(AbstractDealer dealer, PokerTable table)
 {
     Observer = new PokerGameObserver(this);
     m_Dealer = dealer;
     Table = table;
     Params = table.Params;
     m_State = GameStateEnum.Init;
     m_RoundState = RoundStateEnum.Cards;
 }
Example #5
0
        private void AdvanceToNextRoundState()
        {
            if (m_State != GameStateEnum.Playing)
                return;

            if (m_RoundState == RoundStateEnum.Cumul)
                return;

            m_RoundState = (RoundStateEnum)(((int)m_RoundState) + 1);
            StartRound();
        }
Example #6
0
        private void AdvanceToNextRound()
        {
            if (m_State != GameStateEnum.Playing)
                return;

            if (Table.Round == RoundTypeEnum.River)
                AdvanceToNextGameState(); //Advancing to Showdown State
            else
            {
                m_RoundState = RoundStateEnum.Cards;
                Table.ChangeCurrentPlayerTo(Table.DealerSeat);
                Table.Round = (RoundTypeEnum)(((int)Table.Round) + 1);
                StartRound();
            }
        }
Example #7
0
        private void AdvanceToNextGameState()
        {
            if (m_State == GameStateEnum.End)
                return;

            m_State = (GameStateEnum)(((int)m_State) + 1);

            switch (m_State)
            {
                case GameStateEnum.Init:
                    break;
                case GameStateEnum.WaitForPlayers:
                    TryToBegin();
                    break;
                case GameStateEnum.WaitForBlinds:
                    Table.HigherBet = 0;
                    //If we got all the blinds, what are we waiting for ?!
                    if (GameTable.TotalBlindNeeded == 0)
                        AdvanceToNextGameState(); //Advancing to Playing State
                    break;
                case GameStateEnum.Playing:
                    Table.Round = RoundTypeEnum.Preflop;
                    m_RoundState = RoundStateEnum.Cards;
                    StartRound();
                    break;
                case GameStateEnum.Showdown:
                    ShowAllCards();
                    break;
                case GameStateEnum.DecideWinners:
                    DecideWinners();
                    break;
                case GameStateEnum.DistributeMoney:
                    DistributeMoney();
                    StartANewGame();
                    break;
                case GameStateEnum.End:
                    Observer.RaiseEverythingEnded();
                    break;
            }
        }