예제 #1
0
        public override void OnGetGameInfo(ISFSObject gameInfo)
        {
            base.OnGetGameInfo(gameInfo);

            if (App.GameKey.Equals("bjlb"))
            {
                int bankerLimit = gameInfo.GetInt("bankLimit");
                //初始化庄家控制
                BankerCtrl.Init(bankerLimit);
                UserListCtrl.RefreshBanker(gameInfo);
                ((UserListCtrl02)UserListCtrl).InitBankerLimit(bankerLimit);
            }

            var gdata = App.GetGameData <BjlGameData>();

            if (gameInfo.ContainsKey("record"))
            {
                var recordArray = gameInfo.GetIntArray("record");
                var trendcfg    = gdata.TrendConfig;
                foreach (var trend in recordArray)
                {
                    trendcfg.AddTrend(trend);
                }
                trendcfg.TrendView.UpdateView();
            }
        }
예제 #2
0
        public override void Parse(ISFSObject userData)
        {
            base.Parse(userData);
            BetGold    = userData.ContainsKey(JhRequestConstKey.KeyBetGold) ? userData.GetInt(JhRequestConstKey.KeyBetGold) : 0;
            CoinA     -= BetGold;
            WinTimes   = userData.GetInt(JhRequestConstKey.KeyWin);
            LostTimes  = userData.GetInt(JhRequestConstKey.KeyLost);
            TotalTimes = userData.GetInt(JhRequestConstKey.KeyTotal);
            Iskong     = false;
            Cards      = userData.ContainsKey(RequestKey.KeyCards)
                ? userData.GetIntArray(RequestKey.KeyCards)
                : null;
            Award = userData.ContainsKey(JhRequestConstKey.KeyAward) ? userData.GetInt(JhRequestConstKey.KeyAward) : 0;

            Chip = App.GetGameData <JhGameTable>().IsGameStart&& userData.ContainsKey(RequestKey.KeyGold) ? Mathf.Abs(userData.GetInt(RequestKey.KeyGold)) : 0;

            if (userData.ContainsKey("allbeat"))
            {
                AllBeat = userData.GetInt("allbeat");
            }

            IsGiveUp      = userData.ContainsKey(JhRequestConstKey.KeyIsGiveUp) && userData.GetBool(JhRequestConstKey.KeyIsGiveUp);
            IsLook        = userData.ContainsKey(JhRequestConstKey.KeyIsLook) && userData.GetBool(JhRequestConstKey.KeyIsLook);
            IsFail        = userData.ContainsKey(JhRequestConstKey.KeyIsFail) && userData.GetBool(JhRequestConstKey.KeyIsFail);
            IsPlayingGame = userData.ContainsKey(JhRequestConstKey.KeyPlaying) && userData.GetBool(JhRequestConstKey.KeyPlaying);
            IsShowCards   = userData.ContainsKey("showcard") && userData.GetBool("showcard");
            IsReady       = userData.ContainsKey("ready") && userData.GetBool("ready");
            IsGzyz        = userData.ContainsKey("gzyz") && userData.GetBool("gzyz");
        }
예제 #3
0
파일: AResM.cs 프로젝트: narakai/chessgame
        private void UpdateUserData()
        {
            if (_isUpdataUserDateFlag < 2)
            {
                return;
            }
            _isUpdataUserDateFlag = 1;
            _win           = _userData.ContainsKey(InteractParameter.Gold) ? _userData.GetInt(InteractParameter.Gold) : 0;
            NameLabel.text = _userData.GetUtfString(InteractParameter.Nick);

            SetWinText(_win);
            var cards = _userData.GetIntArray(InteractParameter.Cards);
            var count = cards.Length < Cards.Count ? cards.Length : Cards.Count;
            var z     = _userData.GetBool(InteractParameter.IsZ);

            ZhuangObj.gameObject.SetActive(z);
            ZhuangRate.text = z ? _userData.GetUtfString(InteractParameter.ZhuangData) : "";
            for (var i = 0; i < count; i++)
            {
                Cards[i].GetComponent <UISprite>().spriteName = "0x" + cards[i].ToString("X");
            }
            var nd = _userData.GetSFSObject(InteractParameter.NiuData);

            NiuRate.text = "x" + nd.GetInt(InteractParameter.Rate);

            if (z || nd.GetBool(InteractParameter.IsWin))
            {
                NiuRate.color = new Color32(255, 255, 255, 255);
            }
            else
            {
                NiuRate.color = new Color32(0, 240, 2, 255);
            }
            NiuLabel.text = GetNiuName(nd);
        }
예제 #4
0
 public override void SetData(ISFSObject datam, MahjongUserInfo userInfo)
 {
     if (datam.ContainsKey("laiziGang"))
     {
         mParams["laiziGang"] = new VarIntArray(datam.GetIntArray("laiziGang"));
     }
 }
예제 #5
0
        private void OnResult(object data)
        {
            ISFSArray arr = (ISFSArray)data;

            for (int i = 0; i < arr.Count; i++)
            {
                ISFSObject obj    = arr.GetSFSObject(i);
                int        result = obj.GetInt("ResultType");
                int        chair  = obj.GetInt("Chair");
                if (result == 0)
                {
                    int win = obj.GetInt("WinGold");
                    BeatPool.ResultMoveChips(Players[chair].gameObject, new EventDelegate(() =>
                    {
                        Players[chair].ShowMoveGold(win);
                        Players[chair].RefreshCoin();
                        StartCoroutine(DelayReset());
                    }));
                }
                if (obj.ContainsKey("Cards"))
                {
                    int[] cards = obj.GetIntArray("Cards");
                    Players[chair].SetPlayerCards(cards);
                }
            }

            EventObj.SendEvent("TableViewEvent", "Result", null);
        }
예제 #6
0
        public override void Parse(ISFSObject userData)
        {
            base.Parse(userData);
            RollDiceData = new RollDiceData();
            SfsHelper.Parse(userData, ConstantData.KeyPlayerStatus, ref _status);
            SfsHelper.Parse(userData, ConstantData.KeyColor, ref _playerColor);
            SfsHelper.Parse(userData, ConstantData.KeyControlDiceTime, ref _controlDiceTime);
            if (userData.ContainsKey(ConstantData.KeyPlaneInfo))
            {
                var array = userData.GetSFSArray(ConstantData.KeyPlaneInfo);
                SetPlanesInfo(array);
            }

            if (userData.ContainsKey(ConstantData.KeyAuto))
            {
                SfsHelper.Parse(userData, ConstantData.KeyAuto, ref IsAuto);
            }
            if (userData.ContainsKey(ConstantData.KeyChoosePlane))
            {
                var planes = userData.GetIntArray(ConstantData.KeyChoosePlane);
                RollDiceData.OneMoreTime = false;
                RollDiceData.PlaneIds    = planes.ToList();
                YxDebug.LogError("可以选择的飞机数量是:" + planes.Length);
                foreach (var id in planes)
                {
                    YxDebug.LogError(id);
                }
                RollDiceData.QuickModel = true;
            }
        }
예제 #7
0
        /// <summary>
        /// 出牌时 检查播放例子特效
        /// </summary>
        /// <param name="lasOutData"></param>
        public void PlayPartical(ISFSObject lasOutData)
        {
            if (!lasOutData.ContainsKey(RequestKey.KeyCards))
            {
                return;
            }

            var outCds = lasOutData.GetIntArray(RequestKey.KeyCards);

            if (!lasOutData.ContainsKey(RequestKey.KeyCardType))
            {
                CheckPartiCalPlay(outCds);
            }
            else
            {
                var type = (CardType)lasOutData.GetInt(RequestKey.KeyCardType);
                if (type == CardType.None || type == CardType.Exception)
                {
                    CheckPartiCalPlay(outCds);
                }
                else
                {
                    CheckPartiCalPlay(type);
                }
            }
        }
예제 #8
0
        /// <summary>
        /// 初始化枪的类型
        /// </summary>
        /// <param name="gameInfo"></param>
        private void InitGunStyls(ISFSObject gameInfo)
        {
            var maxGunScore   = gameInfo.ContainsKey("bmax") ? gameInfo.GetInt("bmax") : 1000;
            var basicGunScore = gameInfo.ContainsKey("ante") ? gameInfo.GetInt("ante") : 10;
            var blts          = gameInfo.ContainsKey("blts") ? gameInfo.GetIntArray("blts") : _gunStyles;

            Defines.FireSpeed = gameInfo.ContainsKey("blsp") ? gameInfo.GetFloat("blsp") : 0.32f;
            //YxDebug.Log("枪炮数据:" + maxGunScore + "   " + basicGunScore);
            var count = blts.Length;

            _gunStyles = new int[count];
            var i = 0;

            for (; i < count; i++)
            {
                var score = blts[i] * basicGunScore;
                if (score > maxGunScore)
                {
                    break;
                }
                _gunStyles[i] = score;
            }
            Array.Resize(ref _gunStyles, i);
            if (i < 1)
            {
                return;
            }
            MinGunStyle = _gunStyles[0];
            MaxGunStyle = _gunStyles[_gunStyles.Length - 1];
        }
예제 #9
0
        /// <summary>
        /// 获得金币排行数据
        /// </summary>
        /// <param name="data"></param>
        public void GetGoldRank(ISFSObject data)
        {
            HistoryBetSet();
            var goldRank = data.GetIntArray(ConstantData.KeyGoldRank).ToList();

            SszSeat = data.GetInt(ConstantData.KeySsz);
            var totalList = new List <int> {
                SszSeat
            };

            totalList.AddRange(goldRank);
            foreach (var player in Players)
            {
                if (player != null)
                {
                    //Debug.LogError(string.Format("座位:{0},昵称:{1},金币:{2},获胜次数:{3},下注金币:{4}", player.Seat, player.NickM, player.CoinA, player.AccumulateWin, player.AccumulateBet));
                    var seat      = player.Seat;
                    var findIndex = totalList.FindIndex(item => item == seat);
                    if (findIndex <= -1)
                    {
                        totalList.Add(seat);
                    }
                }
            }
            var newPlayers = totalList.Select(t => Players.Find(player => player != null && player.Seat == t)).ToList();

            Players = newPlayers.ToList();
            RoundPlayersFresh();
        }
예제 #10
0
 public override void SetData(ISFSObject datam, MahjongUserInfo userInfo)
 {
     if (datam.ContainsKey("visibleCards"))
     {
         mParams["nius"] = new VarIntArray(datam.GetIntArray("visibleCards"));
     }
 }
예제 #11
0
        public void ShowTableResultInfo(ISFSObject responseData)
        {
            ShowPanel();
            int myWin = 0;

            if (responseData.ContainsKey("win"))
            {
                myWin = responseData.GetInt("win");
                SetResultLabel(myWin, MyResult);
            }
            if (responseData.ContainsKey("bwin"))
            {
                var bankerWin = responseData.GetLong("bwin");
                SetResultLabel(bankerWin, BankerResult);
            }
            if (responseData.ContainsKey("bpg"))
            {
                var  wins     = responseData.GetIntArray("bpg");
                long usersWin = 0;
                foreach (var w in wins)
                {
                    usersWin += w;
                }
                SetResultLabel(-usersWin, PlayersResult);
            }
        }
예제 #12
0
파일: AResM.cs 프로젝트: narakai/chessgame
        private void UpdateUserData()
        {
            if (_isUpdataUserDateFlag < 2)
            {
                return;
            }
            _isUpdataUserDateFlag = 1;
            _win           = _userData.ContainsKey(InteractParameter.Gold) ? _userData.GetInt(InteractParameter.Gold) : 0;
            NameLabel.text = _userData.GetUtfString(InteractParameter.Nick);

            SetWinText(_win);
            var cards = _userData.GetIntArray(InteractParameter.Cards);
            var count = cards.Length < Cards.Count ? cards.Length : Cards.Count;
            var z     = _userData.GetBool(InteractParameter.IsBanker);

            ZhuangObj.gameObject.SetActive(z);
            ZhuangRate.text = z ? _userData.GetUtfString(InteractParameter.ZhuangData) : "";
            for (var i = 0; i < count; i++)
            {
                Cards[i].GetComponent <UISprite>().spriteName = "A_" + cards[i];
            }
            var nd = _userData.GetSFSObject(InteractParameter.NiuData);

            NiuLabel.text = GetNiuName(nd);
        }
예제 #13
0
        ///// <summary>
        ///// 双王检测
        ///// </summary>
        ///// <param name="cards"></param>
        ///// <returns></returns>
        //private bool HaveDoubleKing(int[] cards)
        //{
        //    var gdata = App.GetGameData<FillpitGameData>();
        //    if (!gdata.Dkak)
        //        return false;

        //    bool haveBlackJoker = false;   //有小王
        //    bool haveColorJoker = false;   //有大王
        //    bool haveLaiZi = false;
        //    int laiziValue = gdata.LaiziValue;
        //    foreach (var cardVal in cards)
        //    {
        //        if (cardVal == 0x51)
        //        {
        //            haveBlackJoker = true;
        //        }
        //        else if (cardVal == 0x61)
        //        {
        //            haveColorJoker = true;
        //        }
        //        else if (cardVal == laiziValue)
        //        {
        //            haveLaiZi = true;
        //        }
        //    }
        //    bool laiziAk = (gdata.HaveLaiZi && haveLaiZi) && (haveBlackJoker || haveColorJoker);   //赖子通杀
        //    bool dkak = haveBlackJoker && haveColorJoker;     //双王通杀
        //    dkak = laiziAk || dkak;
        //    gdata.IsAllKill = dkak;
        //    return dkak;
        //}

        ///// <summary>
        ///// 四通检测
        ///// </summary>
        ///// <param name="cards"></param>
        ///// <returns></returns>
        //private bool HaveFours(int[] cards)
        //{
        //    var gdata = App.GetGameData<FillpitGameData>();
        //    if (!gdata.Sfak)
        //        return false;

        //    int len = cards.Length;
        //    int loopTime = len - 4;    //四同减4
        //    bool laizi = gdata.HaveLaiZi;
        //    int laiziValue = gdata.LaiziValue;
        //    int beginCount = 0;

        //    for (int i = 0; i < loopTime; i++)
        //    {
        //        int cardVal = cards[i];

        //        if (laizi && cardVal == laiziValue)
        //        {
        //            beginCount++;
        //            continue;
        //        }
        //        int cardCount = beginCount;

        //        //去掉双王和特殊牌
        //        if (IsSpecial(cardVal))
        //        {
        //            continue;
        //        }

        //        cardVal %= 16;
        //        for (int j = i + 1; j < len; j++)
        //        {
        //            int matchCard = cards[j];
        //            if (IsSpecial(matchCard))
        //            {
        //                continue;
        //            }
        //            //两牌牌值
        //            if (cardVal == matchCard%16 || (laizi && matchCard == laiziValue))
        //            {
        //                cardCount ++;
        //            }
        //        }
        //        if (cardCount >= 3)
        //        {
        //            gdata.IsAllKill = true;
        //            return true;
        //        }
        //    }
        //    return false;
        //}
        //bool IsSpecial(int cardVal)
        //{
        //    return cardVal == 0x51 || cardVal == 0x61 || cardVal == 0x71;
        //}
        #endregion



        ///// <summary>
        ///// 设置玩家状态,播放音效
        ///// </summary>
        ///// <param name="rt"></param>
        ///// <param name="seat"></param>
        //void ShowPlayerType(GameRequestType rt, int seat)
        //{
        //    var panel = GetPlayerPanel(seat, true);
        //    panel.Speak(rt);
        //}

        /// <summary>
        /// 盲注阶段
        /// </summary>
        /// <param name="data"></param>
        public void OnBetBlinds(ISFSObject data)
        {
            var gdata = App.GetGameData <FillpitGameData>();

            if (data.ContainsKey("curante"))
            {
                gdata.CurAnte = data.GetInt("curante");
            }

            if (data.ContainsKey("guoBet"))
            {
                GuoBet = data.GetInt("guoBet");
            }
            BegiBetSeatsNum = data.GetIntArray("users");       //已经准备的玩家座位号(由于是开房模式,准备人固定)

            //判断是否在此房间进行过游戏
            if (!App.GetGameData <FillpitGameData>().RoomPlayed)
            {
                var selfInfo = App.GetGameData <FillpitGameData>();
                for (int i = 0; i < BegiBetSeatsNum.Length; i++)
                {
                    //如果服务器发来的进行游戏的玩家位置有自己的位置,则设置true
                    if (BegiBetSeatsNum[i] == selfInfo.SelfSeat)
                    {
                        App.GetGameData <FillpitGameData>().RoomPlayed = true;
                    }
                }
            }

            AnimationMgr.PlayBeginAnim(data);
        }
예제 #14
0
        /// <summary>
        /// 显示庄家的边框的闪动
        /// </summary>
        /// <param name="responseData"></param>
        /// <returns></returns>
        private IEnumerator ShowRandomBankAni(ISFSObject responseData)
        {
            yield return(1);

            var gdata = App.GetGameData <NnGameData>();
            var banks = responseData.GetIntArray(InteractParameter.Banks);
            var wt    = new WaitForSeconds(0.1f);
            var t     = 5;
            var seat  = -1;

            while (t > 0)
            {
                t--;
                if (seat > -1)
                {
                    gdata.GetPlayer <NnPlayer>(seat).SetBankKuang(false);
                }
                seat = gdata.GetLocalSeat(banks[t % banks.Length]);
                gdata.GetPlayer <NnPlayer>(seat).SetBankKuang(true);
                yield return(wt);
            }
            foreach (var bank in banks)
            {
                gdata.GetPlayer <NnPlayer>(bank, true).HideBankKuang();
            }
            yield return(new WaitForSeconds(0.1f));

            StartCoroutine(BankShake());
        }
예제 #15
0
        public void InitTablePlayers(ISFSObject requestData)
        {
            List <int> seatList = new List <int>();

            if (!requestData.ContainsKey(KeySsz))
            {
                return;
            }


            //添加神算子座位号
            int seat = requestData.ContainsKey(KeySsz) ? requestData.GetInt(KeySsz) : -1;

            UpdateTablePlayer(TablePlayerList[0], seat, true);


            if (requestData.ContainsKey(KeyGoldRank))
            {
                var goldRank    = requestData.GetIntArray(KeyGoldRank);
                int rankCount   = goldRank.Length;
                int playerCount = TablePlayerList.Count;
                for (int i = 0; i < playerCount; i++)
                {
                    if (rankCount <= i)
                    {
                        seatList.Add(-1);
                        continue;
                    }
                    int rankSeat = goldRank[i];
                    seatList.Add(rankSeat);
                    UpdateTablePlayer(TablePlayerList[i], rankSeat, true);
                }
            }
        }
예제 #16
0
        internal void AddResult(ISFSObject response)
        {
            var  diceVals = response.GetIntArray("dices");
            bool bwin     = response.GetLong("bwin") > 0;

            AddResult(diceVals, bwin);
        }
예제 #17
0
        /// <summary>
        /// 初始化结算界面数据
        /// </summary>
        /// <param name="data"></param>
        void InitSummaryInfo(ISFSObject data)
        {
            ISFSObject sfsObj = data.GetSFSArray("users").GetSFSObject(0);

            if (sfsObj.ContainsKey("record"))
            {
                int round = sfsObj.GetIntArray("record").Length;

                for (int i = 0; i < round; i++)
                {
                    List <int> scoreList = new List <int>();
                    for (int j = 0; j < SumUsers.Length; j++)
                    {
                        if (SumUsers[j].Id > 0 && SumUsers[j].ScoreArray != null)
                        {
                            scoreList.Add(SumUsers[j].ScoreArray[i]);
                        }
                    }
                    GameObject go = Instantiate(ItemPrefab);
                    go.transform.parent     = SumItemGrid.transform;
                    go.transform.localScale = Vector3.one;
                    go.GetComponent <SummaryItem>().InitItem(i + 1, scoreList.ToArray());
                }
            }

            ScoreGrid.hideInactive = true;
            ScoreGrid.Reposition();
        }
예제 #18
0
 public void OnFenzhang_Dbsmj(ISFSObject data)
 {
     if (data.ContainsKey("cards"))
     {
         var value = 0;
         int chair = 0;
         DataCenter.Game.FenzhangFlag = true;
         int[] cardsBySeat = data.GetIntArray("cards");
         for (int i = 0; i < cardsBySeat.Length; i++)
         {
             chair = MahjongUtility.GetChair(i);
             value = cardsBySeat[i];
             if (value > 0)
             {
                 Game.MahjongGroups.CurrGetMahjongWall.PopMahjong();
                 var temp = Game.MahjongCtrl.PopMahjong(value);
                 if (temp != null)
                 {
                     var mahjong = temp.GetComponent <MahjongContainer>();
                     mahjong.Laizi = MahjongUtility.MahjongFlagCheck(value);
                     Game.MahjongGroups.MahjongOther[chair].GetInMahjong(mahjong);
                 }
             }
             DataCenter.Players[chair].FenzhangCard = value;
         }
         //隐藏箭头
         Game.TableManager.HideOutcardFlag();
     }
 }
예제 #19
0
        public void OnSelectDingqueEnd(ISFSObject data)
        {
            //停止定时任务
            GameCenter.Scene.TableManager.StopTimer();
            var eventManger = GameCenter.EventHandle;

            eventManger.Dispatch((int)UIEventProtocol.SetPlayerFlagState, new PlayerStateFlagArgs()
            {
                CtrlState = false
            });
            int[] colors = data.GetIntArray("color");
            eventManger.Dispatch((int)UIEventProtocol.ShowDingqueFlag, new HuanAndDqArgs()
            {
                Type          = 0,
                DingqueColors = colors
            });
            //设置手牌断门
            int color = colors[DataCenter.OneselfData.Seat];

            Game.MahjongGroups.PlayerHand.SetHandCardState(HandcardStateTyps.DingqueOver, color);
            Game.MahjongGroups.PlayerToken = true;
            //是庄家,提示打牌
            if (DataCenter.BankerChair == 0)
            {
                var list = Game.MahjongGroups.PlayerHand.MahjongList;
                var item = list[list.Count - 1];
                Game.MahjongGroups.PlayerHand.SetLastCardPos(item);
                GameCenter.EventHandle.Dispatch((int)UIEventProtocol.TipBankerPutCard);
            }
            //开启托管权限
            GameCenter.Shortcuts.SwitchCombination.Open((int)GameSwitchType.PowerAiAgency);
        }
예제 #20
0
        private void OnResult(object data)
        {
            foreach (var o in Items)
            {
                Destroy(o);
            }
            Items.Clear();

            Result.SetActive(true);

            IsStartTimer = true;

            Timer.text = "" + (int)(TTime - TimeSum);

            UIGrid gd = Grid.GetComponent <UIGrid>();

            gd.Reposition();
            gd.enabled = true;

            //TweenAlpha al = Content.GetComponent<TweenAlpha>();

            //if (al != null)
            //{
            //    al.ResetToBeginning();
            //    al.PlayForward();
            //}

            ISFSArray arr = (ISFSArray)data;

            for (int i = 0; i < arr.Count; i++)
            {
                ISFSObject obj    = arr.GetSFSObject(i);
                int        result = obj.GetInt("ResultType");
                string     uname  = obj.GetUtfString("Name");
                int        gold   = obj.GetInt("AddGold");
                int[]      cards  = new int[3];
                int        chair  = obj.GetInt("Chair");
                if (obj.ContainsKey("Cards"))
                {
                    cards = obj.GetIntArray("Cards");
                    Debug.LogError(" result cards " + uname + "  " + cards[0] + " " + cards[1] + " " + cards[2]);
                }
                if (obj.ContainsKey("IsWinner"))
                {
                    if (chair == 0)
                    {
                        ResultIcon.spriteName = obj.GetBool("IsWinner") ? "public_019" : "public_018";
                    }
                }

                GameObject newItem = Instantiate(Item);
                newItem.SetActive(true);
                newItem.transform.parent     = Grid.transform;
                newItem.transform.localScale = Vector3.one;
                JhResultItem item = newItem.GetComponent <JhResultItem>();
                item.SetInfo(uname, gold, result, cards);
                Items.Add(newItem);
            }
        }
예제 #21
0
        /// <summary>
        /// 初始化 房间
        /// </summary>
        public void InitRoom(ISFSObject gameInfo)
        {
            var gdata = App.GetGameData <PaiJiuGameData>();

            //获取房间配置
            if (gameInfo.ContainsKey("rid"))
            {
                gdata.IsRoomGame = true;
                RoomInfo.ShowRoomInfo(gameInfo);
                gdata.CurRound = gameInfo.GetInt("round");
                //HistoryResultMgr.SetRoomInfo(gameInfo);
            }
            else
            {
                gdata.IsRoomGame = false;
                RoomInfo.gameObject.SetActive(false);
            }

            //获取低注值
            if (gameInfo.ContainsKey("ante"))
            {
                gdata.Ante = gameInfo.GetInt("ante");
            }

            if (gameInfo.ContainsKey("fpround"))
            {
                CurTurn = gameInfo.GetInt("fpround");
            }

            if (gameInfo.ContainsKey("outCards"))
            {
                CheckShowedPanel.AddCard(gameInfo.GetIntArray("outCards"));
                TableData.SubCardCount(gameInfo.GetIntArray("outCards").Length);
                //YxDebug.Log(" ==== 打印已经出现过的牌 ===== ");
                //Tool.Tools.TestDebug(gameInfo.GetIntArray("outCards"));
            }
            else
            {
                TableData.SubCardCount(0);
            }

            if (gameInfo.GetInt("status") >= 2)
            {
                TableData.SubCardCount(16);
            }
        }
예제 #22
0
 public static int[] TryGetIntArray(this ISFSObject data, string key)
 {
     if (data.ContainsKey(key))
     {
         return(data.GetIntArray(key));
     }
     return(null);
 }
예제 #23
0
 public static int[] TryGetInArray(ISFSObject obj, string key)
 {
     if (key != null && obj.ContainsKey(key))
     {
         return(obj.GetIntArray(key));
     }
     return(null);
 }
예제 #24
0
 public void ReceiveResult(ISFSObject responseData)
 {
     if (responseData.ContainsKey("total"))
     {
         App.GameData.GetPlayerInfo().CoinA = responseData.GetLong("total");
     }
     if (responseData.ContainsKey("pg"))
     {
         Pg = new[] { 0, 0, 0, 0 };
         Pg = responseData.GetIntArray("pg");
     }
     if (responseData.ContainsKey("bpg"))
     {
         Bpg = new[] { 0, 0, 0, 0 };
         Bpg = responseData.GetIntArray("bpg");
     }
 }
예제 #25
0
        private void AddOnesGroupInfo(int seat, ISFSObject groupInfo)
        {
            int[] cards = groupInfo.GetIntArray("cards");
            int   type  = groupInfo.GetInt("type");
            var   gdata = App.GetGameData <PaiJiuGameData>();

            gdata.GetPlayer <PaiJiuPlayer>(seat, true).UserBetPoker.AddGoupInfo(cards, type);
        }
예제 #26
0
        public void OnResult(ISFSObject response)
        {
            RStatus = RoomStatus.Over;
            int[]      cards = response.GetIntArray("cards");
            JhUserInfo self  = GetPlayerInfo <JhUserInfo>();

            self.Cards = cards;
            ISFSArray users = response.GetSFSArray("users");

            for (int i = 0; i < users.Count; i++)
            {
                ISFSObject itemData = users.GetSFSObject(i);
                int        seat     = itemData.GetInt("seat");
                JhUserInfo user     = GetPlayerInfo <JhUserInfo>(seat, true);
                user.SetResult(itemData);
            }

            if (response.ContainsKey("compare"))
            {
                ISFSArray arr = response.GetSFSArray("compare");
                for (int i = 0; i < arr.Size(); i++)
                {
                    ISFSObject obj   = arr.GetSFSObject(i);
                    int        seat  = obj.GetInt("seat");
                    JhUserInfo uInfo = GetPlayerInfo <JhUserInfo>(seat, true);
                    uInfo.Cards = obj.GetIntArray("cards");
                    int[] cards1 = obj.GetIntArray("cards");
                    Debug.LogError(" result cards " + uInfo.NickM + "  " + cards1[0] + " " + cards1[1] + " " + cards1[2]);
                }
            }


            bool isWinner = false;

            ResultSfs = SFSArray.NewInstance();
            foreach (var useinfo in UserInfoDict)
            {
                if (useinfo.Value.IsPlayingGame)
                {
                    JhUserInfo jhUserInfo = ((JhUserInfo)useinfo.Value);
                    ISFSObject obj        = jhUserInfo.GetResultSfsObject();
                    obj.PutInt("Chair", useinfo.Key);

                    if (useinfo.Key == 0 && jhUserInfo.IsWinner)
                    {
                        isWinner = true;
                    }
                    obj.PutBool("IsWinner", isWinner);
                    ResultSfs.AddSFSObject(obj);
                }
            }

            EventObj.SendEvent("PlayersViewEvent", "Result", ResultSfs);

            ResultDelay = StartCoroutine(SendToResultView(ResultSfs));

            EventObj.SendEvent("SoundEvent", "PlayerEffect", new JhSound.SoundData(isWinner ? JhSound.EnAudio.Win : JhSound.EnAudio.Lost));
        }
예제 #27
0
        /// <summary>
        /// 初始化用户信息
        /// </summary>
        /// <param name="gameInfo"></param>
        public void InitUser(ISFSObject gameInfo)
        {
            var        gdata   = App.GetGameData <GangwuGameData>();
            List <int> betList = new List <int>();


            ISFSObject selfSfs = gameInfo.GetSFSObject(RequestKey.KeyUser);

            InitSomeOne(selfSfs);       //初始化部分数据

            //初始化个人手牌
            var selfPanel = gdata.GetPlayer <PlayerPanel>();

            if (selfSfs.ContainsKey("cards"))
            {
                int[] selfCards = selfSfs.GetIntArray("cards");

                if (selfCards.Length > 0)
                {
                    selfPanel.UserBetPoker.LeftCardValue  = selfCards[0];
                    selfPanel.UserBetPoker.RightCardValue = selfCards[1];
                }
            }

            //初始化下注信息
            if (selfSfs.ContainsKey("curRoundBet"))
            {
                var selfBet = selfSfs.GetInt("curRoundBet");
                betList.Add(selfBet);
            }


            ISFSArray users = gameInfo.GetSFSArray(RequestKey.KeyUserList);

            foreach (ISFSObject user in users)
            {
                InitSomeOne(user);
                if (!user.ContainsKey("curRoundBet"))
                {
                    continue;
                }
                int bet = user.GetInt("curRoundBet");
                betList.Add(bet);
            }

            if (!gameInfo.ContainsKey("totalBet"))
            {
                return;
            }

            int ttBet = gameInfo.GetInt("totalBet");

            foreach (var oneBet in betList)
            {
                ttBet -= oneBet;
            }
            BetMgr.BigBetStack.SetBet(ttBet);
        }
예제 #28
0
        public bool isOut;          //是否可以退出房间

        protected override void InitGameData(ISFSObject gameInfo)
        {
            base.InitGameData(gameInfo);
            var user = gameInfo.GetSFSObject("user");

            UserMoney   = user.GetLong("ttgold");
            BetTime     = gameInfo.GetInt("cd");
            History     = gameInfo.GetIntArray("history");//历史纪录
            Multiplying = gameInfo.ContainsKey("rates") ? gameInfo.GetIntArray("rates") : null;
            //判断是否为重连
            if (gameInfo.ContainsKey("rejoin"))
            {
                Rejoin    = gameInfo.GetBool("rejoin");
                Svt       = gameInfo.GetLong("svt");
                StartTime = gameInfo.GetLong("startTime");
            }
            StartBet = false;
        }
예제 #29
0
 public override void SetData(ISFSObject data, MahjongUserInfo userInfo)
 {
     base.SetData(data, userInfo);
     //胡牌
     if (data.ContainsKey("hucardlist"))
     {
         mParams["hucardlist"] = new VarIntArray(data.GetIntArray("hucardlist"));
     }
 }
예제 #30
0
        /// <summary>
        /// 玩家出牌
        /// </summary>
        /// <param name="listener">出牌的玩家</param>
        /// <param name="data">出牌数据</param>
        /// <param name="isLand">是否是地主</param>
        void PlayerOutCards(OutCdsListener listener, ISFSObject data, bool isLand)
        {
            var cards = data.GetIntArray(RequestKey.KeyCards);

            listener.AllocateCds(cards, isLand);
            var cardsType = GetOutCardsType(data);

            listener.CheckPartiCalPlay(cardsType);
        }
        public void HandleResponse(ISFSObject anObjectIn, GameWorldManager ourGWM)
        {
            Debug.Log("Inventory Update Recieved");
            int[] iDArray = anObjectIn.GetIntArray("IDArray");
            int[] itemArray = anObjectIn.GetIntArray("ItemIDArray");
            int[] quantityArray = anObjectIn.GetIntArray("QuantityArray");
            string[] nameArray = anObjectIn.GetUtfStringArray("NameArray");
            string[] descriptionArray = anObjectIn.GetUtfStringArray("DescriptionArray");
            string[] locationArray = anObjectIn.GetUtfStringArray("SubLocationArray");

            bool reopenInventory = false;
            if(GameObject.Find("InventoryPanel") != null)
            {
                GameObject.Find("SceneScriptsObject").GetComponent<GameUI>().openInventory();
                reopenInventory = true;
            }

            if(itemArray.Length != quantityArray.Length)
            {
                Debug.Log("Item array and quantity array are not the same size.");
            }
            int iPos = 0;
            foreach (int ID in iDArray)
            {
                //If the inventory already has this item in it, simply update its data.
                if(ourGWM.getLPC().getInventory().ContainsKey(ID))
                {
                    ourGWM.getLPC().getInventory()[ID].updateItemData(itemArray[iPos], quantityArray[iPos], nameArray[iPos], descriptionArray[iPos], locationArray[iPos]);
                }
                else if(!ourGWM.getLPC().getInventory().ContainsKey(ID))
                {
                    ourGWM.getLPC().getInventory().Add(ID, new Item(ID, itemArray[iPos], quantityArray[iPos], nameArray[iPos], descriptionArray[iPos], locationArray[iPos]));
                }
                iPos++;
            }
            if(reopenInventory)
            {
                GameObject.Find("SceneScriptsObject").GetComponent<GameUI>().openInventory();
            }
        }
        public void HandleResponse(ISFSObject anObjectIn, GameWorldManager ourGWM)
        {
            string[] types = anObjectIn.GetUtfStringArray("Type");
            int[] levels = anObjectIn.GetIntArray("Level");
            string[] location = anObjectIn.GetUtfStringArray("Location");

            for(int i = 0; i < levels.Length; i++)
            {
                GameObject aNode;
                if(levels[i] == 0)
                {
                    aNode = ourGWM.createObject("Prefabs/Settlements/WoodSign");
                }
                else
                {
                    aNode = ourGWM.createObject("Prefabs/Settlements/" + types[i] + "/" + levels[i].ToString());
                }
                aNode.name = "Node_" + types[i] + "_" + levels[i];
                aNode.transform.position = new Vector3(Convert.ToSingle(location[i].Split(',')[0]), Convert.ToSingle(location[i].Split(',')[1]), Convert.ToSingle(location[i].Split(',')[2]));
                aNode.transform.rotation = new Quaternion(0, Convert.ToSingle(location[i].Split(',')[3]), 0, 0);
            }
        }