Beispiel #1
0
        /// <summary>
        /// 刷新玩家数据
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="user"></param>
        private void RefreshSomeone(DuifenPlayerPanel panel, ISFSObject user)
        {
            if (panel.ReadyState)
            {
                if (user.ContainsKey("state") && user.GetBool("state"))
                {
                    int localSeat = panel.LocalSeat;
                    ReadyLocalSeatList.Add(localSeat);
                }
            }

            panel.ConnectMark.SetActive(!(user.ContainsKey("network") && user.GetBool("network")));
            panel.ShowUserInfo();

            if (user.ContainsKey("systemAuto"))
            {
                bool isAuto = user.GetBool("systemAuto");
                panel.OnGetAutoInfo(isAuto);
            }


            if (!App.GetGameData <DuifenGlobalData>().IsGameing) //如果游戏结束,不接受数据
            {
                return;
            }

            ShowOnesState(panel, user);
            ShowOnesBetVal(panel, user);
            ShowOnesCards(panel, user);
        }
Beispiel #2
0
        public override void UserOut(int localSeat, ISFSObject responseData)
        {
            base.UserOut(localSeat, responseData);
            YxDebug.Log("seat[" + localSeat + "]离开了游戏!");

            var playerPanel = App.GetGameData <DuifenGlobalData>().GetPlayer <DuifenPlayerPanel>(localSeat);

            playerPanel.Info = null;
            playerPanel.gameObject.SetActive(false);
            if (ReadyLocalSeatList.Contains(localSeat))
            {
                ReadyLocalSeatList.Remove(localSeat);
            }
        }
Beispiel #3
0
        public override void UserReady(int localSeat, ISFSObject responseData)
        {
            base.UserReady(localSeat, responseData);
            var readyPanel = App.GameData.GetPlayer <DuifenPlayerPanel>(localSeat);

            if (App.GameData.SelfLocalSeat == localSeat)
            {
                Reset();
            }

            if (!ReadyLocalSeatList.Contains(localSeat))
            {
                ReadyLocalSeatList.Add(localSeat);
            }

            readyPanel.OnUserReady();
        }
Beispiel #4
0
        public override void BeginNewGame(ISFSObject sfsObject)
        {
            base.BeginNewGame(sfsObject);
            var gdata = App.GetGameData <DuifenGlobalData>();

            gdata.CurRound++;

            //初始化房间信息
            CurTurn = 1;
            RoomInfo.SetCurTurn(1);
            RoomInfo.SetCurRound(gdata.CurRound);
            RoomInfo.HideInvitBtn();

            // 游戏开始,刷新房间信息
            gdata.IsGameing = true;
            PlayBeginAnim();

            HistoryResultMgr.CreateHistoryItem(ReadyLocalSeatList.ToArray());
        }
Beispiel #5
0
        public override void GameResponseStatus(int type, ISFSObject data)
        {
            YxDebug.Log("Request == " + (GameRequestType)type);
            var gdata = App.GetGameData <DuifenGlobalData>();


            if (!gdata.IsGameInfo)
            {
                YxDebug.LogError("GameInfo还没有初始化!!");
                return;
            }

            if (data.ContainsKey("fpround"))
            {
                int turn = data.GetInt("fpround");
                if (CurTurn != turn)
                {
                    CurTurn = turn;
                    RoomInfo.SetCurTurn(turn);
                    SetTurnBet(0);
                }
            }

            var selfPanel = gdata.GetPlayer <DuifenPlayerPanel>();
            int selfSeat  = gdata.SelfSeat;

            switch ((GameRequestType)type)
            {
            case GameRequestType.Bet:

                int betGold = data.GetInt("gold");
                if (data.ContainsKey("seat"))
                {
                    int betseat  = data.GetInt("seat");
                    var betPanel = gdata.GetPlayer <DuifenPlayerPanel>(betseat, true);
                    YxDebug.Log(" === 玩家 " + betseat + " 下注 " + betGold + " === ");
                    if (data.ContainsKey("kaipai") && data.GetBool("kaipai"))
                    {
                        betPanel.ShowGameType(PlayerGameType.KaiPai);
                        PlayOnesSound("kaipai", betseat);
                        if (betseat == selfSeat)
                        {
                            SpeakMgr.ShowNothing();
                        }
                    }
                    else
                    {
                        if (betGold > 0)
                        {
                            PlayOnesSound(SpeakMgr.TurnBet > 0 ? "call" : "bet", betseat);

                            SetTurnBet(betGold);

                            int lastBetVal = SpeakMgr.MinBetValue;
                            if (lastBetVal > 0)
                            {
                                betPanel.ShowGameType(betGold > lastBetVal
                                        ? PlayerGameType.AddBet
                                        : PlayerGameType.Call);
                            }
                            SpeakMgr.UpdateBetInfo(betGold);
                        }
                        else
                        {
                            if (!_qiliPlayed)
                            {
                                PlayOnesSound("qili", betseat);
                                _qiliPlayed = true;
                            }

                            betPanel.ShowGameType(PlayerGameType.QiLi);
                        }
                    }
                    BetMgr.PlayerBet(betPanel, betGold, 110);
                    betPanel.PlayerBet(betGold);
                    betPanel.StopCountDown();

                    LaddyMgr.AllBetMoney += betGold;     //总下注额

                    if (betseat == selfSeat)
                    {
                        SpeakMgr.HideSpeak(GameRequestType.Bet);
                    }

                    if (data.ContainsKey("card") && CurTurn < 3)
                    {
                        DealerMgr.BeginBigDeal(data.GetInt("card"), betseat, CurTurn + 2,
                                               selfPanel.ShowSelfPointLabel);
                    }
                }

                if (data.ContainsKey("speaker"))
                {
                    int speakerSeat = data.GetInt("speaker");
                    Speaker(speakerSeat, data.GetInt("cd"),
                            betGold > 0 ? GameRequestType.Bet : GameRequestType.QiLi);

                    if (speakerSeat == selfSeat)
                    {
                        _sendSpaceTimer = double.MinValue;
                        selfPanel.HideGameType();
                    }
                }

                break;

            case GameRequestType.Fold:
                DealerMgr.FastDeal();

                int fseat     = data.GetInt("seat");
                var foldPanel = App.GameData.GetPlayer <DuifenPlayerPanel>(fseat, true);
                foldPanel.StopCountDown();

                foldPanel.ReadyState = false;
                foldPanel.ShowGameType(PlayerGameType.Fold);
                foldPanel.PlayerFold();
                PlayOnesSound("fold", fseat);

                if (fseat == selfSeat)
                {
                    _sendSpaceTimer = double.MinValue;
                    SpeakMgr.ShowNothing();
                }

                if (data.ContainsKey("speaker"))
                {
                    Speaker(data.GetInt("speaker"), rt: GameRequestType.Fold);
                }


                YxDebug.Log("玩家 " + fseat + " 弃牌!!");
                break;


            case GameRequestType.Start:

                _qiliPlayed = false;
                foreach (int seat in ReadyLocalSeatList)
                {
                    var startPanel = gdata.GetPlayer <DuifenPlayerPanel>(seat);
                    startPanel.OnGameStart();
                    BetMgr.PlayerBet(startPanel, gdata.GuoBet, 100);
                    LaddyMgr.AllBetMoney += gdata.GuoBet;
                }

                SpeakMgr.RefreshBetSpeakBtns();

                if (data.ContainsKey("hiden"))
                {
                    //初始化玩家自己的手牌
                    DealerMgr.SetFirstTwoPokersValue(data.GetIntArray("hiden"));
                }
                break;

            case GameRequestType.Cards:

                HideAllPlayerGameType(false);

                if (data.ContainsKey("speaker"))
                {
                    int speaker = data.GetInt("speaker");
                    if (speaker != selfSeat && selfPanel.PlayerType != 3)
                    {
                        SpeakMgr.CouldFold = true;
                        SpeakMgr.RefreshBetSpeakBtns();
                    }
                    else
                    {
                        SpeakMgr.CouldFold = false;
                    }
                    Speaker(speaker, data.GetInt("cd"), GameRequestType.Cards);
                }

                if (data.ContainsKey("cards"))
                {
                    int[] cards      = data.GetIntArray("cards");
                    int[] cardsSeats = data.GetIntArray("users");

                    HideAllPlayerGameType(false);     //隐藏所有游戏状态

                    if (CurTurn <= 1)
                    {
                        DealerMgr.DealFirstTwoPoker(cardsSeats, selfSeat);
                    }
                    DealerMgr.BeginBigDeal(cards, cardsSeats, CurTurn + 1, selfPanel.ShowSelfPointLabel);
                }

                break;

            case GameRequestType.Request:
                _qiliPlayed = false;
                SpeakMgr.ShowNothing();

                gdata.IsGameing = false;
                gdata.GStatus   = YxEGameStatus.Normal;
                DealerMgr.FastDeal();
                StopCountDown();
                int selfWinGold = 0;

                if (data.ContainsKey("players"))
                {
                    ISFSArray requestPlayers = data.GetSFSArray("players");
                    for (int i = 0; i < requestPlayers.Count; i++)
                    {
                        ISFSObject playerInfo = requestPlayers.GetSFSObject(i);
                        if (!playerInfo.ContainsKey("isPlayed") && !playerInfo.GetBool("isPlayed"))
                        {
                            continue;
                        }

                        int requestSeat   = playerInfo.GetInt("seat");
                        var requestPlayer = gdata.GetPlayer <DuifenPlayerPanel>(requestSeat, true);
                        int winGold       = playerInfo.ContainsKey("wgold")
                                ? playerInfo.GetInt("wgold")
                                : playerInfo.GetInt("gold");
                        if (playerInfo.GetBool("isGiveUp"))
                        {
                            requestPlayer.PlayerType = 3;
                        }

                        if (requestPlayer.Info != null)
                        {
                            requestPlayer.Coin = playerInfo.GetLong("ttgold");
                        }

                        if (winGold > 0)
                        {
                            requestPlayer.WinAnimation.SetActive(true);
                            BetMgr.Winner = requestPlayer.transform;
                        }
                        if (requestSeat == selfSeat)
                        {
                            selfWinGold = winGold;
                        }
                    }
                    HistoryResultMgr.GetHistoryInfo(data);     //获取历史记录信息
                }

                bool noSpecial = true;
                if (CurTurn >= 3)
                {
                    if (data.ContainsKey("rslist"))
                    {
                        ISFSArray rslistPlayers = data.GetSFSArray("rslist");
                        for (int i = 0; i < rslistPlayers.Count; i++)
                        {
                            ISFSObject player = rslistPlayers.GetSFSObject(i);
                            int        rsSeat = player.GetInt("seat");
                            var        pp     = gdata.GetPlayer <DuifenPlayerPanel>(rsSeat, true);
                            if (pp.PlayerType == 3)
                            {
                                continue;
                            }

                            int point = player.GetInt("value");

                            int[] cards = player.GetIntArray("cards");
                            pp.TurnCard(0, cards[0], false);
                            pp.TurnCard(1, cards[1], false);

                            if (cards[0] != 0 && cards[1] != 0)
                            {
                                pp.ShowPointLabel(point);
                            }

                            if (point >= 100)
                            {
                                PlayOverHundredAnim(selfWinGold);
                                noSpecial = false;
                                SpecialSeats.Add(rsSeat);
                            }
                            else if (pp.UserBetPoker.HaveBomb)
                            {
                                PlayBoomAnim(selfWinGold);
                                noSpecial = false;
                                SpecialSeats.Add(rsSeat);
                            }
                        }
                    }
                }

                if (noSpecial)
                {
                    if (selfWinGold > 0)
                    {
                        PlayWinAnim();
                    }
                    else if (selfWinGold < 0)
                    {
                        PlayLostAnim();
                    }
                }

                ReadyLocalSeatList.Clear();
                break;

            case GameRequestType.AllowReady:
                ReadyLocalSeatList.Clear();
                var playerList = gdata.PlayerList;
                foreach (var item in playerList)
                {
                    item.ReadyState = false;
                }
                var self = selfPanel as SelfPanel;
                if (self != null)
                {
                    self.ReadyBtn.gameObject.SetActive(true);
                }
                break;

            case GameRequestType.CouldStart:
                if (!gdata.IsRoomGame)
                {
                    break;
                }

                if (selfSeat == 0)
                {
                    selfPanel.CouldStart();
                }

                break;

            case GameRequestType.SystemAuto:

                int  autoSeat = data.GetInt("seat");
                var  panel    = gdata.GetPlayer <DuifenPlayerPanel>(autoSeat, true);
                bool isAuto   = data.GetBool("systemAuto");
                panel.OnGetAutoInfo(isAuto);

                break;
            }
        }