Esempio n. 1
0
        private void OnCurrPlayer(object data)
        {
            AddBeat.Hide();
            foreach (JhPlayer jhPlayer in Players)
            {
                jhPlayer.ResetHeadClick();
            }


            ISFSObject sendObj      = (ISFSObject)data;
            int        chair        = sendObj.GetInt("Chair");
            double     cdTime       = sendObj.GetDouble("CdTime");
            int        singleBet    = sendObj.GetInt("SingleBet");
            long       playerGold   = sendObj.GetLong("PlayerGold");
            bool       isGzyz       = sendObj.ContainsKey("IsGzyz") && sendObj.GetBool("IsGzyz");
            bool       isAutoFollow = sendObj.ContainsKey("IsAutoFollow") && sendObj.GetBool("IsAutoFollow");

            AddBeat.SetBetShow(singleBet, playerGold);

            foreach (JhPlayer jhPlayer in Players)
            {
                jhPlayer.ResetTimer();
            }

            SetUserContrl(chair, sendObj);

            SetCurrChair(chair, cdTime, 0, !isGzyz && isAutoFollow);
        }
Esempio n. 2
0
    private void HandleServerTime(ISFSObject data)
    {
        double time = data.GetDouble("t");

        TimeManager.Instance.Synchronize(time);
        guiText.text = "Ping: " + (int)TimeManager.Instance.AveragePing + " ms";

        //print ("Ping: " + ((Time.time - lastTime) * 1000) + " ms");
        lastTime = Time.time;
    }
Esempio n. 3
0
 public double GetDouble(ISFSObject data, string key)
 {
     if (receiveEncrypted)
     {
         return(provider.DecryptDouble(data.GetByteArray(key)));
     }
     else
     {
         return(data.GetDouble(key));
     }
 }
Esempio n. 4
0
 public double GetDouble(ISFSObject data, string key)
 {
     if (receiveEncrypted)
     {
         return provider.DecryptDouble(data.GetByteArray(key));
     }
     else
     {
         return data.GetDouble(key);
     }
 }
Esempio n. 5
0
    public static NetworkTransform fromSFSObject(ISFSObject data)
    {
        NetworkTransform nTransform = new NetworkTransform();

        nTransform.position  = new Vector3(data.GetFloat("x"), data.GetFloat("y"), data.GetFloat("z"));
        nTransform.rotation  = Quaternion.Euler(new Vector3(data.GetFloat("rx"), data.GetFloat("ry"), data.GetFloat("rz")));
        nTransform.timeStamp = data.GetDouble("time");

        //Debug.Log("fromSFSObject, timeStamp: " + data.GetDouble("time"));

        return(nTransform);
    }
Esempio n. 6
0
    // Creating NetworkTransform from SFS object
    public static NetworkTransform FromSFSObject(ISFSObject data)
    {
        NetworkTransform trans         = new NetworkTransform();
        ISFSObject       transformData = data.GetSFSObject("transform");

        float x = Convert.ToSingle(transformData.GetDouble("x"));
        float y = Convert.ToSingle(transformData.GetDouble("y"));
        float z = Convert.ToSingle(transformData.GetDouble("z"));

        float rx = Convert.ToSingle(transformData.GetDouble("rx"));
        float ry = Convert.ToSingle(transformData.GetDouble("ry"));
        float rz = Convert.ToSingle(transformData.GetDouble("rz"));

        trans.position      = new Vector3(x, y, z);
        trans.angleRotation = new Vector3(rx, ry, rz);

        if (transformData.ContainsKey("t"))
        {
            trans.TimeStamp = Convert.ToDouble(transformData.GetLong("t"));
        }
        else
        {
            trans.TimeStamp = 0;
        }

        return(trans);
    }
Esempio n. 7
0
        protected void OnAutoFollow(object data)
        {
            ISFSObject sendObj = (ISFSObject)data;
            bool       isCurr  = sendObj.GetBool("IsCurrPlayer");

            if (isCurr)
            {
                double cdTime = sendObj.GetDouble("CdTime");
                Players[0].ResetTimer();
                Players[0].OnPlayerTrun(cdTime, 0);
                LeaveTimeTip.text = "";
            }

            SetUserContrl(isCurr ? 0 : -1, sendObj);
        }
Esempio n. 8
0
 // When someon shots handle it and play corresponding animation
 private void HandleShotFired(ISFSObject dt)
 {
     int userId = dt.GetInt ("id");
     if (userId != smartFox.MySelf.Id) {
         double sx, sy, sz, ex, ey, ez;
         sx = dt.GetDouble ("sx");
         sy = dt.GetDouble ("sy");
         sz = dt.GetDouble ("sz");
         ex = dt.GetDouble ("ex");
         ey = dt.GetDouble ("ey");
         ez = dt.GetDouble ("ez");
         Vector3 start = new Vector3 ((float)sx, (float)sy, (float)sz);
         Vector3 end = new Vector3 ((float)ex, (float)ey, (float)ez);
         string shooterName = smartFox.LastJoinedRoom.GetUserById (userId).Name;
         //SoundManager.Instance.PlayShot(PlayerManager.Instance.GetRecipient(userId).audio);
         //PlayerManager.Instance.SyncAnimation(userId, "Shot", 1);
         Attack.instance.shot (start, end, shooterName);
     }
 }
Esempio n. 9
0
        public void OnExtensionRespones(ISFSObject sfsObj)
        {
            byte[] bytes = sfsObj.GetByteArray("data").Bytes;
            NiuNiuProtobufSerializer niuNiuProtobufSerializer = new NiuNiuProtobufSerializer();
            MemoryStream             source = new MemoryStream(bytes);
            Msg msg = niuNiuProtobufSerializer.Deserialize(source, null, typeof(Msg)) as Msg;

            switch (msg.msgType)
            {
            case Msg.MsgType.SyncInfo:
                GameMain.Instance.uiManager.pokerNum = sfsObj.GetInt("pokerNum");
                GameMain.Instance.uiManager.UpdatePokerNum();
                GameMain.Instance.uiManager.ShowRoomInfo(sfsObj.GetUtfString("site"), sfsObj.GetUtfString("roomIndex"));
                GameMain.Instance.uiManager.minDownBet = sfsObj.GetDouble("minDownBet");
                GameMain.Instance.uiManager.seatCoin   = sfsObj.GetDouble("seatCoin");
                GameMain.Instance.SyncServer(msg);
                break;

            case Msg.MsgType.GameState:
                GameMain.Instance.SetCurGameState(msg.gameState);
                break;

            case Msg.MsgType.Time:
                GameMain.Instance.uiManager.UpdateTime(msg.time);
                break;

            case Msg.MsgType.SitDownInfo:
                GameMain.Instance.uiManager.ShowSitDownPlayer(msg.allPlayer[0]);
                break;

            case Msg.MsgType.BankerInfo:
                GameMain.Instance.uiManager.ShowBankerTip(msg.bankerInfo.bankerSeat);
                GameDataManager.Instance.SetBankerData(msg.bankerInfo);
                GameMain.Instance.uiManager.UpdateBankerDownBet(msg.bankerInfo.curCoin, false);
                break;

            case Msg.MsgType.DownBetInfo:
                GameMain.Instance.uiManager.AcceptServerUpdateBetNums(msg.downBetInfo[0]);
                break;

            case Msg.MsgType.Card:
                GameDataManager.Instance.allCards = msg.allCards;
                break;

            case Msg.MsgType.UpdatePlayer:
                GameMain.Instance.uiManager.UpdatePlayerShow(msg.allPlayer[0]);
                break;

            case Msg.MsgType.BankerDownBet:
                GameMain.Instance.uiManager.UpdateBankerDownBet(msg.bankerDownBetCoin, true);
                break;

            case Msg.MsgType.PlayDice:
                GameMain.Instance.uiManager.PlayDiceAnim(msg.allDiceInfo[0], msg.allDiceInfo[1]);
                break;

            case Msg.MsgType.OpenPoker:
                for (int i = 0; i < msg.openPokerSeat.Count; i++)
                {
                    GameMain.Instance.uiManager.IsShowCowCount(true, msg.openPokerSeat[i], true);
                }
                break;

            case Msg.MsgType.ShowWin:
                for (int j = 0; j < msg.isWin.Count; j++)
                {
                    GameDataManager.Instance.IsWins[j] = msg.isWin[j];
                }
                GameMain.Instance.uiManager.IsShowCowMultiple(true);
                if (GameDataManager.Instance.isBanker)
                {
                    GameMain.Instance.uiManager.IsShowFengZhuangBtn(true);
                }
                break;

            case Msg.MsgType.RemovePlayer:
                GameMain.Instance.uiManager.RemovePlayer(msg.allPlayer[0]);
                break;

            case Msg.MsgType.JoinRoomPlayer:
                GameMain.Instance.uiManager.SetPlayerInfo(msg.allPlayer);
                break;

            case Msg.MsgType.Score:
                GameDataManager.Instance.score       = msg.allScore.selfScore;
                GameDataManager.Instance.bankerScore = msg.allScore.bankerScore;
                GameMain.Instance.uiManager.IsShowScore(true);
                break;

            case Msg.MsgType.BankerTip:
                GameMain.Instance.uiManager.IsShowBankerTip(true, msg.bankerTipNum);
                break;

            case Msg.MsgType.HideBanker:
                GameMain.Instance.uiManager.HideBankerShow();
                break;

            case Msg.MsgType.FeedbackTip:
                TipManager.Instance.ShowFeedbackTipsBar(msg.feedbackTip);
                break;

            case Msg.MsgType.GameChat:
                GameMain.Instance.uiManager.ShowGameChat(msg);
                break;
            }
        }
Esempio n. 10
0
 public void Setup(ISFSObject obj)
 {
     particleSystem.renderer.sortingLayerName = "2 Middle Lower UI";
     this.gwName = obj.GetUtfString("NAME");
     this.state = obj.GetUtfString("STATE");
     this.owner = obj.GetUtfString("OWNER");
     this.atk = obj.GetInt("ATK");
     this.def = obj.GetInt("DEF");
     this.type = obj.GetUtfString("TYPE");
     ISFSArray sws = obj.GetSFSArray("SW");
     this.region = obj.GetUtfString("REGION");
     this.sw = new string[3];
     this.sw[0] = (string) sws.GetElementAt(0);
     this.sw[1] = (string) sws.GetElementAt(1);
     this.sw[2] = (string) sws.GetElementAt(2);
     mg = GameObject.Find("Manager").GetComponent<Manager>();
     gameObject.transform.position = new Vector3((float)obj.GetDouble("X")*mg.getScale().x,(float)obj.GetDouble("Y")*mg.getScale().y,1F);
     gameObject.transform.localScale = new Vector3(0.25f,0.25f,0.25f);
 }
Esempio n. 11
0
    private void OnExtensionRespones(BaseEvent evt)
    {
        string     text   = (string)evt.Params["cmd"];
        ISFSObject sfsObj = (SFSObject)evt.Params["params"];

        switch (text)
        {
        case "Msg":
            this.OnMsgMessageHandle(sfsObj.GetByteArray("data").Bytes);
            break;

        case "GetHeartbeat":
            this.heartbeat = (float)sfsObj.GetInt("data");
            break;

        case "username":
            SingletonMono <DataManager, AllScene> .Instance.username = sfsObj.GetUtfString("username");
            this.smartfox.Send(new LogoutRequest());
            PlayerPrefs.SetString("username", SingletonMono <DataManager, AllScene> .Instance.username);
            PlayerPrefs.SetString("nick", SingletonMono <DataManager, AllScene> .Instance.nick);
            PlayerPrefs.SetString("sex", SingletonMono <DataManager, AllScene> .Instance.sex);
            PlayerPrefs.SetString("headUrl", SingletonMono <DataManager, AllScene> .Instance.headUrl);
            break;

        case "LoginSuccess":
            if ((sfsObj.GetBool("isRepair") && sfsObj.GetBool("IsRepairUser")) || !sfsObj.GetBool("isRepair"))
            {
                if (sfsObj.GetUtfString("Version") == SingletonMono <Main, AllScene> .Instance.AppVer)
                {
                    SingletonMono <DataManager, AllScene> .Instance.headUrl              = sfsObj.GetUtfString("headUrl");
                    SingletonMono <DataManager, AllScene> .Instance.isPlaying            = sfsObj.GetBool("isPlaying");
                    SingletonMono <DataManager, AllScene> .Instance.coin                 = sfsObj.GetDouble("coin");
                    SingletonMono <DataManager, AllScene> .Instance.diamond              = sfsObj.GetDouble("diamond");
                    SingletonMono <DataManager, AllScene> .Instance.vip                  = sfsObj.GetUtfString("vip");
                    SingletonMono <DataManager, AllScene> .Instance.safeCoin             = sfsObj.GetDouble("safeCoin");
                    SingletonMono <DataManager, AllScene> .Instance.signCount            = sfsObj.GetInt("signCount");
                    SingletonMono <DataManager, AllScene> .Instance.isCanSign            = sfsObj.GetBool("isCanSign");
                    SingletonMono <DataManager, AllScene> .Instance.tuiGuangPeopleCount  = sfsObj.GetDouble("tuiGuangPeopleCount");
                    SingletonMono <DataManager, AllScene> .Instance.tuiGuangLeiJiCoin    = sfsObj.GetDouble("tuiGuangLeiJiCoin");
                    SingletonMono <DataManager, AllScene> .Instance.tuiGuangLeiJiDiamond = sfsObj.GetDouble("tuiGuangLeiJiDiamond");
                    SingletonMono <DataManager, AllScene> .Instance.phone                = sfsObj.GetUtfString("phone");
                    SingletonMono <DataManager, AllScene> .Instance.agentname            = sfsObj.GetUtfString("agentname");
                    SingletonMono <DataManager, AllScene> .Instance.accountstate         = sfsObj.GetUtfString("accountstate");
                    SingletonMono <DataManager, AllScene> .Instance.isCanGive            = sfsObj.GetUtfString("isCanGive");
                    SingletonMono <DataManager, AllScene> .Instance.isGlobalCanGive      = sfsObj.GetUtfString("isGlobalCanGive");
                    SingletonMono <DataManager, AllScene> .Instance.isRecordOperation    = sfsObj.GetUtfString("isRecordOperation");
                    SingletonMono <DataManager, AllScene> .Instance.serverTime           = sfsObj.GetLong("serverTime");
                    SingletonMono <DataManager, AllScene> .Instance.clientTime           = DataManager.ConvertDateTimeToInt(DateTime.Now);
                    if (SingletonMono <DataManager, AllScene> .Instance.IsRecordOperation())
                    {
                        SingletonMono <DataManager, AllScene> .Instance.curAllOperation.Add(new OperationRecord("login"));
                    }
                    if (SingletonMono <DataManager, AllScene> .Instance.accountstate.Equals("1"))
                    {
                        TipManager.Instance.ShowTipsBar("您当前登录的帐号已被管理员封停,请联系客服了解相关情况!", null);
                    }
                    else
                    {
                        byte[] bytes = sfsObj.GetByteArray("siteInfo").Bytes;
                        this.OnMsgMessageHandle(bytes);
                        byte[] bytes2 = sfsObj.GetByteArray("noticeInfo").Bytes;
                        this.OnMsgMessageHandle(bytes2);
                        byte[] bytes3 = sfsObj.GetByteArray("allFriend").Bytes;
                        this.OnMsgMessageHandle(bytes3);
                        byte[] bytes4 = sfsObj.GetByteArray("message").Bytes;
                        this.OnMsgMessageHandle(bytes4);
                        PlayerPrefs.SetString("AppVer", SingletonMono <Main, AllScene> .Instance.AppVer);
                        TipManager.Instance.HideWaitTip();
                        SingletonMono <Main, AllScene> .Instance.SetGameStates(LobbyState.GameSelect);
                    }
                }
                else
                {
                    TipManager.Instance.ShowTipsBar("请更新最新版本", delegate
                    {
                        Application.OpenURL(sfsObj.GetUtfString("AppUrl"));
                        Application.Quit();
                    });
                }
            }
            else
            {
                if (sfsObj.GetUtfString("isRepairReason") == string.Empty)
                {
                    TipManager.Instance.ShowTipsBar("系统正在维护中,请稍后...", null);
                }
                else
                {
                    TipManager.Instance.ShowTipsBar(sfsObj.GetUtfString("isRepairReason"), null);
                }
            }
            break;

        case "DaiLiFeedback":
            TipManager.Instance.ShowTips(sfsObj.GetUtfString("msg"), 2f);
            if (sfsObj.GetUtfString("state").Equals("true"))
            {
                UIManager.Instance.IsShowDaiLiBar(false);
            }
            break;

        case "OpenSafe":
            SingletonMono <DataManager, AllScene> .Instance.coin = sfsObj.GetDouble("coin");
            UIManager.Instance.UpdateUserInfoShow();
            if (sfsObj.GetBool("isSuccess"))
            {
                UIManager.Instance.ShowSafeBar();
            }
            else
            {
                TipManager.Instance.HideWaitTip();
                TipManager.Instance.ShowTips("你正在游戏中,不可操作保险箱...", 3f);
            }
            break;

        case "NoticeText":
            FloatNoticeManager.Instance.ShowNotice(sfsObj.GetUtfString("noticeText"));
            break;

        case "TaskInfo":
            TipManager.Instance.HideWaitTip();
            SingletonMono <DataManager, AllScene> .Instance.signCoin = sfsObj.GetDouble("signCoin");
            UIManager.Instance.ShowTaskBar();
            break;

        case "UpdateCoin":
            SingletonMono <DataManager, AllScene> .Instance.coin = sfsObj.GetDouble("coin");
            UIManager.Instance.UpdateUserInfoShow();
            break;

        case "IsPlaying":
            SingletonMono <DataManager, AllScene> .Instance.isPlaying = sfsObj.GetBool("isPlaying");
            break;

        case "SaveSafeFail":
            TipManager.Instance.HideWaitTip();
            TipManager.Instance.ShowTipsBar("数据异常", null);
            break;

        case "SaveSafeSuccess":
            TipManager.Instance.HideWaitTip();
            SingletonMono <DataManager, AllScene> .Instance.coin     = sfsObj.GetDouble("coin");
            SingletonMono <DataManager, AllScene> .Instance.safeCoin = sfsObj.GetDouble("safeCoin");
            if (sfsObj.GetDouble("offsetCoin") < 0.0)
            {
                TipManager.Instance.ShowTips("你存入了" + sfsObj.GetDouble("offsetSafeCoin") + "金币", 2f);
            }
            else
            {
                TipManager.Instance.ShowTips("你取出了" + sfsObj.GetDouble("offsetCoin") + "金币", 2f);
            }
            UIManager.Instance.RefreshSafeShow();
            UIManager.Instance.UpdateUserInfoShow();
            break;

        case "GiveGetUserInfoFail":
            TipManager.Instance.HideWaitTip();
            TipManager.Instance.ShowFeedbackTipsBar("请输入正确的玩家Id");
            break;

        case "GiveGetUserInfo":
        {
            TipManager.Instance.HideWaitTip();
            double giveCoin = sfsObj.GetDouble("giveCoin");
            TipManager.Instance.ShowConfirmBar("你确定要赠送" + DataManager.ChangeDanWei(giveCoin) + "金币给玩家:" + sfsObj.GetUtfString("nick"), delegate
                {
                    SingletonMono <NetManager, AllScene> .Instance.SendIdGiveInfo(sfsObj.GetUtfString("usernum"), sfsObj.GetUtfString("nick"), giveCoin);
                    TipManager.Instance.ShowWaitTip(string.Empty);
                }, delegate
                {
                    UIManager.Instance.UpdateUserInfoShow();
                });
            break;
        }

        case "GiveCoinFail":
            TipManager.Instance.HideWaitTip();
            TipManager.Instance.ShowTipsBar("数据异常", null);
            break;

        case "GiveCoinSuccess":
        {
            TipManager.Instance.HideWaitTip();
            TipManager.Instance.ShowTips("赠送成功...", 2f);
            SingletonMono <DataManager, AllScene> .Instance.coin = sfsObj.GetDouble("coin");
            UIManager.Instance.UpdateUserInfoShow();
            Record record = new Record();
            record.username = sfsObj.GetUtfString("id");
            record.nick     = sfsObj.GetUtfString("nick");
            record.coin     = sfsObj.GetDouble("giveCoin");
            record.time     = sfsObj.GetUtfString("time");
            SingletonMono <DataManager, AllScene> .Instance.allGiveRecord.Add(record);

            UIManager.Instance.AddGiveRecord(record);
            break;
        }

        case "ReceiveGift":
        {
            SingletonMono <DataManager, AllScene> .Instance.safeCoin += sfsObj.GetDouble("giveCoin");
            Record record2 = new Record();
            if (SingletonMono <DataManager, AllScene> .Instance.isGotGiveRecord)
            {
                record2.username = sfsObj.GetUtfString("giveId");
                record2.nick     = sfsObj.GetUtfString("giveNick");
                record2.coin     = sfsObj.GetDouble("giveCoin");
                record2.time     = sfsObj.GetUtfString("time");
                SingletonMono <DataManager, AllScene> .Instance.allReceiveRecord.Add(record2);
            }
            TipManager.Instance.ShowTips(string.Concat(new string[]
                {
                    "你收到",
                    sfsObj.GetUtfString("giveNick"),
                    "赠送的",
                    DataManager.ChangeDanWei(sfsObj.GetDouble("giveCoin")),
                    "金币,注意查看保险箱"
                }), 2f);
            if (SingletonMono <Main, AllScene> .Instance.cutState != LobbyState.PlayGame)
            {
                if (UIManager.Instance.RefreshSafeShow != null)
                {
                    UIManager.Instance.RefreshSafeShow();
                }
                if (SingletonMono <DataManager, AllScene> .Instance.isGotGiveRecord)
                {
                    UIManager.Instance.AddReceiveRecord(record2);
                }
            }
            break;
        }

        case "SignSuccess":
            SingletonMono <DataManager, AllScene> .Instance.coin      = sfsObj.GetDouble("coin");
            SingletonMono <DataManager, AllScene> .Instance.signCoin  = sfsObj.GetDouble("signCoin");
            SingletonMono <DataManager, AllScene> .Instance.signCount = sfsObj.GetInt("signCount");
            SingletonMono <DataManager, AllScene> .Instance.isCanSign = false;
            UIManager.Instance.UpdateSignShow();
            TipManager.Instance.HideWaitTip();
            UIManager.Instance.UpdateUserInfoShow();
            break;

        case "RechargeMessage":
        {
            double @double = sfsObj.GetDouble("rechargeCoin");
            SingletonMono <DataManager, AllScene> .Instance.safeCoin += @double;
            if (SingletonMono <Main, AllScene> .Instance.cutState != LobbyState.PlayGame && UIManager.Instance.RefreshSafeShow != null)
            {
                UIManager.Instance.RefreshSafeShow();
            }
            TipManager.Instance.ShowTips("您充值的" + @double + "金币以存入保险箱,请注意查收", 2f);
            break;
        }

        case "UserFengTing":
            SingletonMono <DataManager, AllScene> .Instance.accountstate = "1";
            this.smartfox.Disconnect();
            break;

        case "ChangeVip":
            SingletonMono <DataManager, AllScene> .Instance.vip = sfsObj.GetUtfString("vip");
            if (SingletonMono <Main, AllScene> .Instance.cutState != LobbyState.PlayGame && UIManager.Instance.UpdateUserInfoShow != null)
            {
                UIManager.Instance.UpdateUserInfoShow();
            }
            break;

        case "ChangeGlobalCanGive":
            SingletonMono <DataManager, AllScene> .Instance.isGlobalCanGive = sfsObj.GetUtfString("isGlobalCanGive");
            break;

        case "ChangeUserIsCanGive":
            SingletonMono <DataManager, AllScene> .Instance.isCanGive = sfsObj.GetUtfString("isCanGive");
            break;

        case "NiuNiuData":
            if (NiuNiuNetManager.Instance != null)
            {
                NiuNiuNetManager.Instance.OnExtensionRespones(sfsObj);
            }
            break;
        }
    }
Esempio n. 12
0
        protected void OnGameStatus(object data)
        {
            ISFSObject obj       = (ISFSObject)data;
            bool       isPlaying = obj.GetBool("IsPlaying");

            Reset(isPlaying || !DonotResetOnGameResult);
            //初始化 加注
            int[] antes = obj.GetIntArray("Antes");

            AddBeat.SetBeatInfo(antes);
            int  singleBet  = obj.GetInt("SingleBet");
            long playerGold = obj.GetLong("PlayerGold");

            AddBeat.SetBetShow(singleBet, playerGold);

            _showTimeTip = obj.GetBool("isShowTimeTip");

            if (isPlaying)
            {
                int banker = obj.GetInt("Banker");
                SetBanker(banker);

                int    curChair = obj.GetInt("CurChair");
                long   lastTime = obj.GetLong("LastTime");
                double cdTime   = obj.GetDouble("CdTime");
                double passTime = (int)(JhFunc.GetTimeStamp(false) - lastTime);
                if (passTime / 1000.0f >= cdTime)
                {
                    passTime = 0;
                }

                bool isGzyz       = obj.ContainsKey("IsGzyz") && obj.GetBool("IsGzyz");
                bool isAutoFollow = obj.ContainsKey("IsAutoFollow") && obj.GetBool("IsAutoFollow");

                SetCurrChair(curChair, cdTime, passTime / 1000.0f, !isGzyz && isAutoFollow);

                SetUserContrl(curChair, obj);

                //chip pool
                if (obj.ContainsKey("ChipList"))
                {
                    ISFSArray chips = obj.GetSFSArray("ChipList");
                    for (int i = 0; i < chips.Count; i++)
                    {
                        ISFSObject arrItem   = chips.GetSFSObject(i);
                        int        chipValue = arrItem.GetInt("ChipValue");
                        int        chipIndex = arrItem.GetInt("ChipIndex");
                        int        chipCnt   = arrItem.GetInt("ChipCnt");

                        for (int j = 0; j < chipCnt; j++)
                        {
                            BeatPool.Beat(chipIndex, chipValue);
                        }
                    }
                }
            }
            else
            {
                UserContrl.QiPaiShow();
            }



            //玩家信息
            ISFSArray array = obj.GetSFSArray("Players");

            foreach (ISFSObject arrItem  in array)
            {
                int chair = arrItem.GetInt("Chair");

                Players[chair].SetReady(arrItem.ContainsKey("IsReady") && arrItem.GetBool("IsReady"));

                if (arrItem.ContainsKey("IsPlaying") && arrItem.GetBool("IsPlaying"))
                {
                    Players[chair].ShowCardsBack();

                    if (arrItem.ContainsKey("Cards"))
                    {
                        Players[chair].SetPlayerCards(arrItem.GetIntArray("Cards"));
                    }

                    if (arrItem.ContainsKey("IsLook"))
                    {
                        if (arrItem.GetBool("IsLook"))
                        {
                            Players[chair].SetPlayerCardsStatus(JhCardGroup.GroupStatus.Look);
                        }
                    }
                    if (arrItem.ContainsKey("IsGiveUp"))
                    {
                        if (arrItem.GetBool("IsGiveUp"))
                        {
                            Players[chair].SetPlayerCardsStatus(JhCardGroup.GroupStatus.GiveUp);
                            Players[chair].ShowCardsGray();
                        }
                    }
                    if (arrItem.ContainsKey("IsFail"))
                    {
                        if (arrItem.GetBool("IsFail"))
                        {
                            Players[chair].SetPlayerCardsStatus(JhCardGroup.GroupStatus.CompareOut);
                            Players[chair].ShowCardsGray();
                        }
                    }
                    if (arrItem.ContainsKey("AllBeat"))
                    {
                        Players[chair].SetBeat(arrItem.GetInt("AllBeat"));
                    }
                }
            }
        }