/// <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); }
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); }
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); } }
/// <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 }