public static void dispatchMessage(RoomMessageType type, NetworkMessage message) { if (message_room_handlers[(UInt16)type] != null) { message_room_handlers[(UInt16)type](message); } }
private RoomMessage InitAnnouncementMsg(RoomMessageType type, string message) { RoomMessage msg = new RoomMessage(); msg.MessageType = type; msg.Content = message; msg.SenderId = Me.Id; msg.IsHorn = true; msg.Time = DateTime.Now.ToString(); return msg; }
void onRoomMsg(NetworkMessage message) { RoomMessageType type = (RoomMessageType)message.readUInt8(); dispatchMessage(type, message); }
public static void addServerHandler(RoomMessageType type, Action <NetworkMessage> handler) { message_room_handlers[(UInt16)type] = handler; }
public bool IsRegisteredMessageType(RoomMessageType messageType) { return _typeFilters.Contains(messageType); }
public RoomMessage GetRoomMessage(RoomMessageType msgType) { return(RoomsPermanentMsg); }
/// <summary> /// 具体那一房间的的回放信息(包含多局) /// </summary> /// <param name="message"></param> private void onRoomRecordDetail(NetworkMessage message) { GameData.m_RecordRoundList.Clear(); GameData.m_PlayerInfoList.Clear(); ulong guid = message.readUInt64(); bool isData = message.readBool();//是否有数据 if (!isData) { return; } GameData.m_TableInfo.id = message.readUInt32(); GameData.m_TableInfo.configRoundIndex = (byte)message.readUInt32(); GameData.m_TableInfo.configPayIndex = message.readUInt8(); //if (!isData) return; //GameData.m_TableInfo.id = message.readUInt32(); //GameData.m_TableInfo.configRoundIndex = message.readUInt8(); //GameData.m_TableInfo.configFangChongIndex = message.readUInt8(); //GameData.m_TableInfo.configShengPaiIndex = message.readUInt8(); //GameData.m_TableInfo.configDaZiIndex = message.readUInt8(); //GameData.m_TableInfo.configPlayerIndex = message.readUInt8(); //GameData.m_TableInfo.configPayIndex = message.readUInt8(); byte count = message.readUInt8();//有多少局 #region for (int i = 0; i < count; i++) { RecordListInfo info = new RecordListInfo(); info.startTime = myFunction.Instance.fromSecondsFromGameBegin(message.readUInt32()); //开始时间 info.endTime = myFunction.Instance.fromSecondsFromGameBegin(message.readUInt32()); //结束时间 ulong makerGui = message.readUInt64(); //庄的guid info.ZhuangGuid = makerGui; //庄的guid string makerName = message.readString(); //庄的昵称 byte pCount = message.readUInt8(); //玩家个数 for (int k = 0; k < pCount; k++) { #region 原来 //string strs = message.readString(); //strs += ":" + message.readInt32(); //info.playerInfo.Add(strs);//guid|name|socre|headid #endregion ulong playerguid = message.readUInt64(); string otherName = message.readString(); string HeadId = message.readString(); int ChangeScore = message.readInt32(); int BaseScore = message.readInt32(); int BombScore = message.readInt32(); int FaWangScore = message.readInt32(); int TotalScore = message.readInt32(); string str = playerguid.ToString() + "@" + otherName.ToString() + "@" + ChangeScore.ToString(); info.playerInfo.Add(str); //guid|name|socre|headid bool HaveCard = message.readBool(); //是否有手牌 if (HaveCard) { int CardCount = message.readInt32();//手牌 for (int j = 0; j < CardCount; j++) { uint card = message.readUInt32(); } } } GameData.m_RecordRoundList.Add(info);//每局的信息 } #endregion GameData.m_HuiFangList.Clear(); // byte tCount = message.readUInt8(); //有多少条录像 for (int i = 0; i < tCount; i++) { HuiFangInfo hInfo = new HuiFangInfo(); byte dataVersion = message.readUInt8(); if (GameData.GlobleRoomType == RoomType.ZB) //载宝才传 { hInfo.MianCard = message.readUInt32(); //面牌 hInfo.MagicCard = message.readUInt32(); } GameData.m_PlayerInfoList = new List <PlayerInfo>(); byte playerCount = message.readUInt8();//玩家个数 for (int k = 0; k < playerCount; k++) { PlayerInfo pInfo = new PlayerInfo(); pInfo.guid = message.readUInt64(); #region string[] strs = GetPlayerInfo(pInfo.guid).Split('@'); pInfo.name = strs[1]; pInfo.headID = strs[3]; #endregion pInfo.pos = message.readUInt8(); pInfo.score = message.readInt32(); if (GameData.GlobleRoomType == RoomType.NN) { Int32 basescore = message.readInt32();//牛牛下注的分数 } // pInfo.fangPaoScore = message.readUInt32(); byte cardCount = message.readUInt8();//手牌 for (int j = 0; j < cardCount; j++) { pInfo.localCardList.Add(message.readUInt32()); } GameData.m_PlayerInfoList.Add(pInfo); hInfo.playerList.Add(pInfo); } uint opCount = (uint)message.readInt32();//操作数 uint roomID = 0; for (int j = 0; j < opCount; j++) { RoomMessageType type = (RoomMessageType)message.readUInt8(); string strs = Enum.GetName(typeof(RoomMessageType), type); if (type == RoomMessageType.PlayerInCard) { roomID = message.readUInt32(); byte pos = message.readUInt8(); uint card = message.readUInt32(); uint resCardCount = message.readUInt32(); strs += ":" + pos; strs += ":" + card; strs += ":" + resCardCount; hInfo.operateList.Add(strs); } if (type == RoomMessageType.playerOperate) { //roomID = message.readUInt32(); //byte pos = message.readUInt8(); //CardOperateType opType = (CardOperateType)message.readUInt8(); //uint opCard = message.readUInt32(); //byte outPos = message.readUInt8(); //uint needCardCount = message.readUInt32(); //strs += ":" + pos; //strs += ":" + Enum.GetName(typeof(CardOperateType), opType); //strs += ":" + opCard; //strs += ":" + outPos; //hInfo.operateList.Add(strs); roomID = message.readUInt32(); byte pos = message.readUInt8(); CardOperateType opType = (CardOperateType)message.readUInt8(); int count1 = message.readInt32(); List <uint> OutCardList = new List <uint>(); for (int k = 0; k < count1; k++) { uint card = message.readUInt32(); OutCardList.Add(card); } int PlayerLeftCard = message.readInt32(); byte outPos = message.readUInt8(); //uint needCard = message.readUInt32(); bool isAnGang = message.readBool(); strs += ":" + pos; strs += ":" + Enum.GetName(typeof(CardOperateType), opType); strs += ":" + OutCardList[0]; strs += ":" + outPos; hInfo.operateList.Add(strs); } } GameData.m_HuiFangList.Add(hInfo); } UIManager.Instance.ShowUiPanel(UIPaths.UIPanel_ZhanJiRoundInfo, OpenPanelType.MinToMax); }
public RoomMessage GetRoomMessage(RoomMessageType msgType) { return RoomsPermanentMsg; }