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;
 }
Example #5
0
 public bool IsRegisteredMessageType(RoomMessageType messageType)
 {
     return _typeFilters.Contains(messageType);
 }
Example #6
0
 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);
    }
Example #8
0
 public RoomMessage GetRoomMessage(RoomMessageType msgType)
 {
     return RoomsPermanentMsg;
 }