예제 #1
0
        public override int OnChangeRoom()
        {
            var gdata = App.GetGameData <SssGameData>();

            gdata.CurRound = 0;
            Reset();
            ResetAllPlayerState();
            PlayersCardReset();

            int length = gdata.PlayerList.Length;

            //重置玩家
            for (int i = 0; i < length; i++)
            {
                SssPlayer player = gdata.GetPlayer <SssPlayer>(i);
                player.Reset();
                player.gameObject.SetActive(false);
            }

            //重置历史记录
            HistoryMgr.Reset();
            App.GetRServer <SssjpGameServer>().OnAllowEnter();
            YxWindowManager.ShowWaitFor();
            return(base.OnChangeRoom());
        }
예제 #2
0
        public override void UserReady(int localSeat, ISFSObject responseData)
        {
            base.UserReady(localSeat, responseData);
            YxDebug.Log("Seat " + responseData.GetInt("seat") + " is ready!");

            var gdata     = App.GetGameData <SssGameData>();
            int readySeat = responseData.GetInt("seat");

            if (!gdata.IsPlaying)
            {
                //设置玩家的准备状态
                SssPlayer panel = gdata.GetPlayer <SssPlayer>(readySeat, true);
                panel.IsReady = true;
                panel.OnUserReady();
            }
        }
예제 #3
0
        public override void GameResponseStatus(int type, ISFSObject response)
        {
            var gdata = App.GetGameData <SssGameData>();

            YxDebug.Log("Request == " + type);

            if (!App.GetRServer <SssjpGameServer>().HasGetGameInfo)
            {
                YxDebug.LogError("GameInfo还没有初始化完成!!");
                return;
            }
            switch (type)
            {
            case GameRequestType.Cards:

                if (!gdata.IsPlayed)
                {
                    gdata.IsPlaying = true;
                    SettingMenu.SetRoomModelList();
                }
                gdata.IsPlaying = true;

                SetChoiseModel(gdata.ChoiseModel);

                WeiXinInviteBtn.ChatInviteBtn.SetActive(false);        //隐藏微信邀请按钮
                OnGameStart(response);

                ClockCd.MoveClock(ClockParent);
                ClockCd.HaveWarning = true;
                DealPoker(response);
                if (gdata.IsBankerModel)
                {
                    foreach (var user in gdata.PlayerList)
                    {
                        var player = (SssPlayer)user;
                        player.SetBankerMarkActive();
                    }
                }
                gdata.CurRound++;
                if (gdata.IsRoomGame)
                {
                    RoomInfo.UpdataCurRound();         //如果是开房模式,刷新房间数据
                }
                break;

            case GameRequestType.Match:

                //停止选牌
                StopAllCoroutines();
                ClockCd.StopCountDown();
                ChoiseMgr.HideChoiseView();         //隐藏选牌界面

                //刷新玩家的手牌
                foreach (var user in gdata.PlayerList)
                {
                    var player = (SssPlayer)user;

                    if (player.Info != null && player.IsReady)
                    {
                        Dealer.FaPai(player);
                    }
                }

                //将玩家手牌恢复到正确的位置
                ISFSArray playersInfo = response.GetSFSArray("playerinfo");
                foreach (ISFSObject player in playersInfo)
                {
                    int       stopSeat = player.GetInt("seat");
                    SssPlayer panel    = gdata.GetPlayer <SssPlayer>(stopSeat, true);
                    Dealer.FaPai(panel);
                    panel.StopWaitting();
                    panel.MoveHandCardNoAnim();
                }

                List <UserMatchInfo> handCardsList = GetMatchInfoList(response);
                MatchMgr.MatchCards(handCardsList);             //比牌
                HistoryMgr.GetHistoryInfo(handCardsList);       //添加历史记录
                break;

            case GameRequestType.FinishChoise:

                int choiseSeat = response.GetInt("seat");

                SssPlayer fcPanel = gdata.GetPlayer <SssPlayer>(choiseSeat, true);
                fcPanel.FinishChoiseCards();
                break;

            case GameRequestType.Result:

                ResultMgr.ResultFlyChips(response);
                HistoryMgr.AddHistoryInfo(response);
                if (response.ContainsKey("banker"))
                {
                    gdata.BankerSeat = response.GetInt("banker");
                }
                App.GameData.GStatus = YxFramwork.Enums.YxEGameStatus.Normal;
                break;

            case GameRequestType.AllowReady:

                foreach (var user in gdata.PlayerList)
                {
                    var player = (SssPlayer)user;
                    player.OnAllowReady();
                }
                Reset();
                break;

            case GameRequestType.CouldStart:

                if (App.GameData.SelfSeat == 0)
                {
                    App.GetGameData <SssGameData>().GetPlayer <SssPlayer>().OnCouldStart();
                }

                break;
            }
        }
예제 #4
0
        public void InitUserGameState(ISFSObject data)
        {
            var       gdata          = App.GetGameData <SssGameData>();
            int       seat           = data.GetInt("seat");
            SssPlayer panel          = gdata.GetPlayer <SssPlayer>(seat, true);
            bool      selfReadyState = data.ContainsKey("state") && data.GetBool("state");

            panel.SetReadyStatue(selfReadyState);


            if (data.ContainsKey("isput"))
            {
                Dealer.FaPai(panel);  //为玩家创建13张手牌
                int isput = data.GetInt("isput");
                if (isput > 0)
                {
                    panel.MoveHandCardNoAnim();
                }
                else
                {
                    //播放等待动画
                    panel.RepositionCards();
                    panel.Waitting();
                }
            }
            //比牌阶段,所有人直接显示所有手牌
            else if (data.ContainsKey("playerinfo"))
            {
                var matchInfo = GetMatchInfoOnInitUserGameState(data);

                Dealer.FaPai(panel);
                panel.MoveHandCardNoAnim();
                panel.ShowAllHandPoker(matchInfo);
                if (matchInfo.Special > (int)CardType.none)
                {
                    panel.HandCardsType.SetSpecialMarkActive(true);
                    panel.HandCardsType.ShowTotalScore(matchInfo.TtScore);
                }
                else
                {
                    panel.GetGameInfoInitUser(matchInfo);
                }
            }


            //自己会有手牌,是选牌阶段
            if (data.ContainsKey("cards"))
            {
                if (data.ContainsKey("isput") && data.GetInt("isput") == 0)
                {
                    ChoiseMgr.ShowChoiseView(data);
                }
            }

            //比牌阶段初始化
            if (data.ContainsKey("userscore"))
            {
                TurnRes.InitTurnResultInfo(data.GetSFSObject("userscore"));
                TurnRes.ShowAllResultItem();
            }

            if (data.ContainsKey("score"))
            {
                int score = data.GetInt("score");

                if (score > 0)
                {
                    ResultMgr.WinSeats.Add(seat);
                    panel.ShowResultLabel(score);
                }
                else if (score < 0)
                {
                    ResultMgr.LoseSeats.Add(seat);
                    panel.ShowResultLabel(score);
                }
            }
        }
예제 #5
0
        public void InitUserGameState(ISFSObject data)
        {
            var gdata = App.GetGameData <SssGameData>();

            if (data.ContainsKey("isput"))
            {
                SssPlayer user = gdata.GetPlayer <SssPlayer>(data.GetInt("seat"), true);
                Dealer.FaPai(user);  //为玩家创建13张手牌
                int isput = data.GetInt("isput");
                if (isput > 0)
                {
                    user.MoveHandCardNoAnim();
                }
                else
                {
                    //播放等待动画
                    user.RepositionCards();
                    user.Waitting();
                }
            }

            //比牌阶段,所有人直接显示所有手牌
            else if (data.ContainsKey("duns"))
            {
                SssPlayer user = gdata.GetPlayer <SssPlayer>(data.GetInt("seat"), true);
                Dealer.FaPai(user);
                user.MoveHandCardNoAnim();
                ISFSObject duns         = data.GetSFSObject("duns");
                ISFSArray  dunsInfo     = duns.GetSFSArray("duninfo");
                var        cardsValList = dunsInfo.Cast <ISFSObject>().SelectMany(dun => dun.GetIntArray("cards")).ToList();
                user.ShowAllHandPoker(cardsValList);
            }


            //自己会有手牌,是选牌阶段
            if (data.ContainsKey("cards"))
            {
                if (data.ContainsKey("isput") && data.GetInt("isput") == 0)
                {
                    ChoiseMgr.ShowChoiseView(data);
                }
            }

            //比牌阶段初始化
            if (data.ContainsKey("userscore"))
            {
                TurnRes.InitTurnResultInfo(data.GetSFSObject("userscore"));
                TurnRes.ShowAllResultItem();
            }

            if (data.ContainsKey("score"))
            {
                int seat  = data.GetInt("seat");
                int score = data.GetInt("score");

                if (score > 0)
                {
                    ResultMgr.WinSeats.Add(seat);
                    gdata.GetPlayer <SssPlayer>(seat, true).ShowResultLabel(score);
                }
                else if (score < 0)
                {
                    ResultMgr.LoseSeats.Add(seat);
                    gdata.GetPlayer <SssPlayer>(seat, true).ShowResultLabel(score);
                }
            }
        }