static void OnGetRoomRsp(GetRoomRsp rsp)
 {
     if (MainLobby.Exist)
     {
         MainLobby.Instance.OnGetRoom(rsp);
     }
 }
    public void OnGetRoom(GetRoomRsp rsp)
    {
        ClearRooms();
        int        cnt    = rsp.RoomInLobby.Count;
        GameObject prefab = Resources.Load <GameObject>("RoomInfoItem");

        for (int i = 0; i < cnt; i++)
        {
            InsertRoomItem(rsp.RoomInLobby[i], prefab);
        }
    }
Esempio n. 3
0
    public void OnGetRoom(GetRoomRsp rsp)
    {
        SelectRoomId = -1;
        int cnt = rsp.RoomInLobby.Count;

        for (int i = 0; i < rooms.Count; i++)
        {
            GameObject.DestroyImmediate(rooms[i]);
        }
        rooms.Clear();
        GameObject prefab = Resources.Load <GameObject>("RoomInfoItem");

        for (int i = 0; i < cnt; i++)
        {
            InsertRoomItem(rsp.RoomInLobby[i], prefab);
        }
    }
 static void OnGetRoomRsp(GetRoomRsp rsp)
 {
     Main.Ins.RoomMng.RegisterRooms(rsp.RoomInLobby);
 }
    //套接口消息.
    public static void Update()
    {
        //处理网络消息
        for (int i = 0; i < packets.Count; i++)
        {
            Dictionary <int, byte[]> pack = packets[i];
            lock (pack)
            {
                MemoryStream ms = null;
                try
                {
                    foreach (var each in pack)
                    {
                        //UnityEngine.Debug.LogError(string.Format("收到:{0}", each.Key));
                        switch (each.Key)
                        {
                        case (int)MeteorMsg.MsgType.ProtocolVerifyRsp:
                            ms = new MemoryStream(each.Value);
                            ProtocolVerifyRsp rspVer = ProtoBuf.Serializer.Deserialize <ProtocolVerifyRsp>(ms);
                            OnVerifyResult(rspVer);
                            break;

                        case (int)MeteorMsg.MsgType.GetRoomRsp:
                            ms = new MemoryStream(each.Value);
                            GetRoomRsp rspG = ProtoBuf.Serializer.Deserialize <GetRoomRsp>(ms);
                            OnGetRoomRsp(rspG);
                            break;

                        case (int)MeteorMsg.MsgType.JoinRoomRsp:
                            ms = new MemoryStream(each.Value);
                            JoinRoomRsp rspJ = ProtoBuf.Serializer.Deserialize <JoinRoomRsp>(ms);
                            ClientJoinRoomRsp(rspJ);
                            break;

                        //case (int)MeteorMsg.MsgType.OnJoinRoomRsp:
                        //    ms = new MemoryStream(each.Value);
                        //    OnEnterRoomRsp rspE = ProtoBuf.Serializer.Deserialize<OnEnterRoomRsp>(ms);
                        //    OnEnterRoomRsp_(rspE);
                        //    break;
                        case (int)MeteorMsg.MsgType.CreateRoomRsp:
                            ms = new MemoryStream(each.Value);
                            CreateRoomRsp rspC = ProtoBuf.Serializer.Deserialize <CreateRoomRsp>(ms);
                            OnCreateRoomRsp(rspC);
                            break;

                        //case (int)MeteorMsg.MsgType.EnterLevelRsp:
                        //    ms = new MemoryStream(each.Value);
                        //    EnterLevelRsp rspER = ProtoBuf.Serializer.Deserialize<EnterLevelRsp>(ms);
                        //    EnterLevelRsp_(rspER);
                        //    break;
                        //case (int)MeteorMsg.MsgType.OnEnterLevelRsp:
                        //    ms = new MemoryStream(each.Value);
                        //    OnEnterLevelRsp rspOE = ProtoBuf.Serializer.Deserialize<OnEnterLevelRsp>(ms);
                        //    OnEnterLevelRsp_(rspOE);
                        //    break;
                        //case (int)MeteorMsg.MsgType.UserRebornSB2C:
                        //    ms = new MemoryStream(each.Value);
                        //    OnEnterLevelRsp rspReborn = ProtoBuf.Serializer.Deserialize<OnEnterLevelRsp>(ms);
                        //    OnUserRebornRsp_(rspReborn);
                        //    break;
                        //case (int)MeteorMsg.MsgType.OnLeaveRoomRsp:
                        //    ms = new MemoryStream(each.Value);
                        //    OnLeaveRoomRsp rspL = ProtoBuf.Serializer.Deserialize<OnLeaveRoomRsp>(ms);
                        //    OnLeaveRoomRsp_(rspL);
                        //    break;
                        case (int)MeteorMsg.MsgType.ChatInRoomRsp:
                            ms = new MemoryStream(each.Value);
                            ChatMsg chatRsp = ProtoBuf.Serializer.Deserialize <ChatMsg>(ms);
                            OnReceiveChatMsg(chatRsp);
                            break;

                        case (int)MeteorMsg.MsgType.AudioChat:
                            ms = new MemoryStream(each.Value);
                            AudioChatMsg audioRsp = ProtoBuf.Serializer.Deserialize <AudioChatMsg>(ms);
                            OnReceiveAudioMsg(audioRsp);
                            break;
                        //case (int)MeteorMsg.MsgType.UserDeadSB2C:
                        //    //Debug.LogError("OnUserDead");
                        //    ms = new MemoryStream(each.Value);
                        //    UserId userDeadRsp = ProtoBuf.Serializer.Deserialize<UserId>(ms);
                        //    OnUserDead(userDeadRsp);
                        //    break;

                        //case (int)MeteorMsg.MsgType.ExitQueueRsp:
                        //    OnExitQueue();
                        //    break;
                        case (int)MeteorMsg.MsgType.EnterQueueRsp:
                            OnEnterQueue();
                            break;

                        //帧同步信息-UDP
                        //收到服务器的帧同步信息.
                        case (int)MeteorMsg.MsgType.SyncCommand:
                            ms = new MemoryStream(each.Value);
                            GameFrames t = ProtoBuf.Serializer.Deserialize <GameFrames>(ms);
                            Main.Ins.FrameSync.OnReceiveCommand(t);
                            break;
                        }
                    }
                }
                catch (Exception exp)
                {
                    UnityEngine.Debug.LogError(exp.Message + exp.StackTrace);
                }
                finally
                {
                    pack.Clear();
                }
            }
        }

        lock (messageQueue)
        {
            int length = messageQueue.Count;
            for (int i = 0; i < length; i++)
            {
                switch (messageQueue[i].Message)
                {
                case (short)LocalMsgType.Connect: OnConnect(messageQueue[i].Result, messageQueue[i].message); break;

                case (short)LocalMsgType.DisConnect: OnDisconnect(); break;

                case (short)LocalMsgType.SendFTPLogComplete: OnSendComplete(messageQueue[i].Result, messageQueue[i].Param); break;

                case (short)LocalMsgType.GameStart: OnGameStart(); break;

                case (short)LocalMsgType.SaveRecord: OnSaveRecord(messageQueue[i]); break;

                case (short)LocalMsgType.PathCalcFinished: OnPathCalcFinished(messageQueue[i]); break;
                }
            }
            messageQueue.Clear();
        }
    }
    //套接口消息.
    public static void Update()
    {
        //处理网络消息
        lock (ClientProxy.Packet)
        {
            MemoryStream ms = null;
            foreach (var each in ClientProxy.Packet)
            {
                switch (each.Key)
                {
                case (int)MeteorMsg.MsgType.GetRoomRsp:
                    ms = new MemoryStream(each.Value);
                    GetRoomRsp rspG = ProtoBuf.Serializer.Deserialize <GetRoomRsp>(ms);
                    OnGetRoomRsp(rspG);
                    break;

                case (int)MeteorMsg.MsgType.JoinRoomRsp:
                    ms = new MemoryStream(each.Value);
                    JoinRoomRsp rspJ = ProtoBuf.Serializer.Deserialize <JoinRoomRsp>(ms);
                    OnJoinRoomRsp(rspJ);
                    break;

                case (int)MeteorMsg.MsgType.OnJoinRoomRsp:
                    ms = new MemoryStream(each.Value);
                    OnEnterRoomRsp rspE = ProtoBuf.Serializer.Deserialize <OnEnterRoomRsp>(ms);
                    OnEnterRoomRsp_(rspE);
                    break;

                case (int)MeteorMsg.MsgType.CreateRoomRsp:
                    ms = new MemoryStream(each.Value);
                    CreateRoomRsp rspC = ProtoBuf.Serializer.Deserialize <CreateRoomRsp>(ms);
                    OnCreateRoomRsp(rspC);
                    break;

                case (int)MeteorMsg.MsgType.EnterLevelRsp:
                    ms = new MemoryStream(each.Value);
                    EnterLevelRsp rspER = ProtoBuf.Serializer.Deserialize <EnterLevelRsp>(ms);
                    EnterLevelRsp_(rspER);
                    break;

                case (int)MeteorMsg.MsgType.OnEnterLevelRsp:
                    ms = new MemoryStream(each.Value);
                    OnEnterLevelRsp rspOE = ProtoBuf.Serializer.Deserialize <OnEnterLevelRsp>(ms);
                    OnEnterLevelRsp_(rspOE);
                    break;

                case (int)MeteorMsg.MsgType.OnLeaveRoomRsp:
                    ms = new MemoryStream(each.Value);
                    OnLeaveRoomRsp rspL = ProtoBuf.Serializer.Deserialize <OnLeaveRoomRsp>(ms);
                    OnLevvaRoomRsp_(rspL);
                    break;

                case (int)MeteorMsg.MsgType.SyncInput:
                    ms = new MemoryStream(each.Value);
                    InputReq InputRsp = ProtoBuf.Serializer.Deserialize <InputReq>(ms);
                    OnSyncInputRsp(InputRsp);
                    break;

                case (int)MeteorMsg.MsgType.SyncKeyFrame:
                    ms = new MemoryStream(each.Value);
                    KeyFrame KeyFrameRsp = ProtoBuf.Serializer.Deserialize <KeyFrame>(ms);
                    OnSyncKeyFrame(KeyFrameRsp);
                    break;
                }
            }
            ClientProxy.Packet.Clear();
        }

        lock (messageQueue)
        {
            int length = messageQueue.Count;
            for (int i = 0; i < length; i++)
            {
                switch (messageQueue[i].Message)
                {
                case (short)LocalMsgType.Connect: OnConnect(messageQueue[i].Result); break;

                case (short)LocalMsgType.DisConnect: OnDisconnect(); break;

                case (short)LocalMsgType.SendFTPLogComplete: OnSendComplete(messageQueue[i].Result, messageQueue[i].Param); break;
                }
            }
            messageQueue.Clear();
        }
    }
Esempio n. 7
0
    public override void Update()
    {
        for (int i = 0; i < packets.Count; i++)
        {
            SortedDictionary <int, byte[]> pack = packets[i];
            lock (pack) {
                try {
                    foreach (var each in pack)
                    {
                        ms.SetLength(0);
                        ms.Write(each.Value, 0, each.Value.Length);
                        ms.Seek(0, SeekOrigin.Begin);
                        TcpClientProxy.Ins.endPing = Time.time;
                        TcpClientProxy.Ins.ping    = Mathf.FloorToInt(1000 * (TcpClientProxy.Ins.endPing - TcpClientProxy.Ins.startPing));
                        Main.Ins.EventBus.Fire(EventId.PingChanged);
                        switch (each.Key)
                        {
                        case (int)MeteorMsg.MsgType.ProtocolVerify:
                            //ms = new MemoryStream(each.Value);
                            ProtocolVerifyRsp rspVer = Serializer.Deserialize <ProtocolVerifyRsp>(ms);
                            OnVerifyResult(rspVer);
                            break;

                        case (int)MeteorMsg.MsgType.AliveUpdate:
                            TcpClientProxy.Ins.HeartBeat();
                            break;

                        case (int)MeteorMsg.MsgType.GetRoomRsp:
                            //ms = new MemoryStream(each.Value);
                            GetRoomRsp rspG = Serializer.Deserialize <GetRoomRsp>(ms);
                            OnGetRoomRsp(rspG);
                            break;

                        case (int)MeteorMsg.MsgType.JoinRoomRsp:
                            //ms = new MemoryStream(each.Value);
                            JoinRoomRsp rspJ = Serializer.Deserialize <JoinRoomRsp>(ms);
                            ClientJoinRoomRsp(rspJ);
                            break;

                        case (int)MeteorMsg.MsgType.CreateRoomRsp:
                            //ms = new MemoryStream(each.Value);
                            CreateRoomRsp rspC = Serializer.Deserialize <CreateRoomRsp>(ms);
                            OnCreateRoomRsp(rspC);
                            break;

                        case (int)MeteorMsg.MsgType.OnPlayerJoinRoom:
                            //ms = new MemoryStream(each.Value);
                            OnPlayerJoinRoom rspOE = Serializer.Deserialize <OnPlayerJoinRoom>(ms);
                            OnPlayerEnterRoomRsp(rspOE);
                            break;

                        //case (int)MeteorMsg.MsgType.UserRebornSB2C:
                        //    ms = new MemoryStream(each.Value);
                        //    OnEnterLevelRsp rspReborn = ProtoBuf.Serializer.Deserialize<OnEnterLevelRsp>(ms);
                        //    OnUserRebornRsp_(rspReborn);
                        //    break;
                        //case (int)MeteorMsg.MsgType.OnLeaveRoomRsp:
                        //    ms = new MemoryStream(each.Value);
                        //    OnLeaveRoomRsp rspL = ProtoBuf.Serializer.Deserialize<OnLeaveRoomRsp>(ms);
                        //    OnLeaveRoomRsp_(rspL);
                        //    break;
                        case (int)MeteorMsg.MsgType.OnPlayerEnterLevel:    //其他玩家进入关卡
                            //ms = new MemoryStream(each.Value);
                            PlayerEvent rspEnterLevel = Serializer.Deserialize <PlayerEvent>(ms);
                            OnPlayerEnterLevel(rspEnterLevel);
                            break;

                        case (int)MeteorMsg.MsgType.EnterLevelRsp:    //自己进入关卡,拉取到场景里所有已知角色
                            //ms = new MemoryStream(each.Value);
                            OnEnterLevelRsp EnterLevel = Serializer.Deserialize <OnEnterLevelRsp>(ms);
                            OnEnterLevel(EnterLevel);
                            break;

                        case (int)MeteorMsg.MsgType.ChatInRoomRsp:
                            //ms = new MemoryStream(each.Value);
                            ChatMsg chatRsp = Serializer.Deserialize <ChatMsg>(ms);
                            OnReceiveChatMsg(chatRsp);
                            break;

                        //case (int)MeteorMsg.MsgType.AudioChat:
                        //    //ms = new MemoryStream(each.Value);
                        //    AudioChatMsg audioRsp = Serializer.Deserialize<AudioChatMsg>(ms);
                        //    OnReceiveAudioMsg(audioRsp);
                        //    break;
                        case (int)MeteorMsg.MsgType.OnPlayerLeaveLevel:    //其他玩家离开关卡
                            //ms = new MemoryStream(each.Value);
                            PlayerEvent rspLeaveLevel = Serializer.Deserialize <PlayerEvent>(ms);
                            OnPlayerLeaveLevel(rspLeaveLevel);
                            break;

                        case (int)MeteorMsg.MsgType.SyncRate:    //KCP识别出错,关闭旧的KCP,创建新的
                            SyncMsg syncRate = Serializer.Deserialize <SyncMsg>(ms);
                            FrameSyncServer.Ins.ChangeSyncRate(syncRate.syncrate);
                            break;
                        }
                    }
                } catch (Exception exp) {
                    UnityEngine.Debug.LogError(exp.Message + exp.StackTrace);
                } finally {
                    pack.Clear();
                }
            }
        }

        lock (messageQueue) {
            int length = messageQueue.Count;
            for (int i = 0; i < length; i++)
            {
                switch (messageQueue[i].Message)
                {
                case (short)LocalMsgType.TimeOut: OnTimeOut(messageQueue[i].Result, messageQueue[i].message); break;

                case (short)LocalMsgType.Connect: OnConnect(messageQueue[i].Result, messageQueue[i].message); break;

                case (short)LocalMsgType.DisConnect: OnDisconnect(); break;

                case (short)LocalMsgType.SendFTPLogComplete: OnSendComplete(messageQueue[i].Result, messageQueue[i].Param); break;

                case (short)LocalMsgType.SaveRecord: OnSaveRecord(messageQueue[i]); break;
                }
            }
            messageQueue.Clear();
        }
    }
Esempio n. 8
0
 void OnGetRoomRsp(GetRoomRsp rsp)
 {
     RoomMng.Ins.RefreshRooms(rsp.Rooms);
     Main.Ins.EventBus.Fire(EventId.RoomUpdate);
 }