示例#1
0
        /// <summary>
        /// 创建一个牌组(重连时使用这个,这个时候是需要处理Group中的数据即可)
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static MahjongGroupData CteateGroupFromSfsObject(ISFSObject data)
        {
            int gtype;
            int value;

            int[] cards;
            GameTools.TryGetValueWitheKey(data, out gtype, RequestKey.KeyType);
            GameTools.TryGetValueWitheKey(data, out value, RequestKey.KeyCard);
            GameTools.TryGetValueWitheKey(data, out cards, RequestKey.KeyCards);
            GroupType        type      = (GroupType)gtype;
            MahjongGroupData groupData = new MahjongGroupData(type);

            switch (type)
            {
            case GroupType.Chi:
                groupData.AddValue(cards[0]);
                groupData.AddValue(value);
                groupData.AddValue(cards[1]);
                break;

            default:
                for (int i = 0, max = groupData.values.Length; i < max; i++)
                {
                    groupData.AddValue(value);
                }
                break;
            }
            return(groupData);
        }
示例#2
0
 private void Parse(ISFSObject user)
 {
     GameTools.TryGetValueWitheKey(user, out gang, RequestKey.KeyGangScore);
     GameTools.TryGetValueWitheKey(user, out anGang, RequestKey.KeyAnGangScore);
     GameTools.TryGetValueWitheKey(user, out gold, RequestKey.KeyGold);
     GameTools.TryGetValueWitheKey(user, out nick, RequestKey.KeyNickName);
     GameTools.TryGetValueWitheKey(user, out pao, RequestKey.KeyPaoScore);
     GameTools.TryGetValueWitheKey(user, out hu, RequestKey.KeyHuScore);
     GameTools.TryGetValueWitheKey(user, out id, RequestKey.KeyId);
     GameTools.TryGetValueWitheKey(user, out zimo, RequestKey.KeyZimoScore);
     GameTools.TryGetValueWitheKey(user, out seat, RequestKey.KeySeat);
 }
示例#3
0
 private void Parse(ISFSObject data)
 {
     GameTools.TryGetValueWitheKey(data, out Type, RequestKey.KeyType);
     GameTools.TryGetValueWitheKey(data, out Cards, RequestKey.KeyCards);
     GameTools.TryGetValueWitheKey(data, out Sit, RequestKey.KeySeat);
     GameTools.TryGetValueWitheKey(data, out OpCard, RequestKey.KeyOpCard);
     GameTools.TryGetValueWitheKey(data, out Card, RequestKey.KeyCard);
     GameTools.TryGetValueWitheKey(data, out Op, RequestKey.KeyMenuOperation);
     GameTools.TryGetValueWitheKey(data, out Seq, RequestKey.KeySeq);
     if (Cards.Length > 0)
     {
         if (Card == 0)
         {
             Card = Cards[0];
         }
     }
     if (Op > 0)
     {
         GameTools.TryGetValueWitheKey(data, out TingOutCards, RequestKey.KeyTingOutCards);
     }
 }
示例#4
0
        /// <summary>
        ///     将GameInfo放到本地
        /// </summary>
        /// <param name="data"></param>
        public void InitData(ISFSObject data)
        {
            #region 解析数据

            string     pCards;
            int        pNum;
            int        round;
            int        state;
            ISFSArray  otherUsers;
            int        bank0;
            ISFSObject currentUser;
            int        rate;
            int        gtype;
            int        ante;
            string     roomName;
            int        quan;
            int        cardLenth;
            int        id;
            string     cargs;
            bool       rejoin;
            int        showRoomID;
            int        totalRound;
            GameTools.TryGetValueWitheKey(data, out pCards, RequestKey.KeyPCards);
            GameTools.TryGetValueWitheKey(data, out pNum, RequestKey.KeyPlayerNum);
            GameTools.TryGetValueWitheKey(data, out round, RequestKey.KeyNowRound);
            GameTools.TryGetValueWitheKey(data, out state, RequestKey.KeyState);
            GameTools.TryGetValueWitheKey(data, out otherUsers, RequestKey.KeyUsers);
            GameTools.TryGetValueWitheKey(data, out bank0, RequestKey.KeyBanker0);
            GameTools.TryGetValueWitheKey(data, out currentUser, RequestKey.KeyUser);
            GameTools.TryGetValueWitheKey(data, out rate, RequestKey.KeyRate);
            GameTools.TryGetValueWitheKey(data, out gtype, RequestKey.KeyGameType);
            GameTools.TryGetValueWitheKey(data, out roomName, RequestKey.KeyRoomName);
            GameTools.TryGetValueWitheKey(data, out cardLenth, RequestKey.KeyCardLenth);
            GameTools.TryGetValueWitheKey(data, out id, RequestKey.KeyId);
            GameTools.TryGetValueWitheKey(data, out cargs, RequestKey.KeyCargs);
            GameTools.TryGetValueWitheKey(data, out rejoin, RequestKey.KeyRejoin);
            GameTools.TryGetValueWitheKey(data, out showRoomID, RequestKey.KeyShowRoomID);
            GameTools.TryGetValueWitheKey(data, out totalRound, RequestKey.KeyTotalRound);
            GameTools.TryGetValueWitheKey(data, out CurrentGame.RuleInfo, RequestKey.KeyRule);
            GameTools.TryGetValueWitheKey(data, out CurrentGame.OwnerId, RequestKey.KeyOwnerId);
            YxDebug.LogError("当前局的起始庄座位号是:" + bank0);

            #endregion

            #region 处理数据

            var index = 0;
            _typeList.Clear();
            //检查牌型
            while (index < pCards.Length)
            {
                _typeList.Add(Convert.ToInt32(pCards.Substring(index, 2), 16));
                index += 2;
            }
            YxDebug.LogError(string.Format("当前游戏中的牌型有{0}种", _typeList.Count));
            if (!(PlayerNum * _typeList.Count).Equals(cardLenth))
            {
                YxDebug.LogError(string.Format("所有玩家总牌数为{0},玩家的牌数是{1}", _typeList.Count, cardLenth));
            }
            SetGameEnv(cargs);
            if (data.ContainsKey(RequestKey.KeyQuan))
            {
                IsQuanExist = true;
                GameTools.TryGetValueWitheKey(data, out quan, RequestKey.KeyQuan);
                CurrentGame.Quan = quan;
            }
            Bank0 = bank0;
            CurrentGame.RealRoomId   = id;
            CurrentGame.GameRoomType = gtype;
            CurrentGame.ShowRoomId   = showRoomID;
            CurrentGame.NowRound     = round;
            CurrentGame.IsQuanExist  = IsQuanExist;
            CurrentGame.Ante         = 0;
            CurrentGame.Rate         = rate;
            CurrentGame.TotalRound   = totalRound;
            TotalNum        = cardLenth;
            GameTotalStatus = (TotalState)state;
            LeftNum         = TotalNum;
            UserDatas       = new List <ISFSObject>();
            UserDatas.Add(currentUser);
            foreach (ISFSObject user in otherUsers)
            {
                UserDatas.Add(user);
            }

            #endregion
        }