Exemplo n.º 1
0
 public void Add(Session session, FrameMessage frameMessage)
 {
     this.Queue.Enqueue(new SessionFrameMessage()
     {
         Session = session, FrameMessage = frameMessage
     });
 }
Exemplo n.º 2
0
        public void Dispatch(Session session, ushort opcode, int offset, byte[] messageBytes, AMessage message)
        {
            // 如果是帧同步消息,交给ClientFrameComponent处理
            FrameMessage frameMessage = message as FrameMessage;

            if (frameMessage != null)
            {
                Game.Scene.GetComponent <ClientFrameComponent>().Add(frameMessage);
                return;
            }

            // 普通消息或者是Rpc请求消息
            if (message is AMessage || message is ARequest)
            {
                MessageInfo messageInfo = new MessageInfo(opcode, message);
                if (opcode < 2000)
                {
                    Game.Scene.GetComponent <CrossComponent>().Run(CrossIdType.MessageDeserializeFinish, messageInfo);
                }
                else
                {
                    Game.Scene.GetComponent <MessageDispatherComponent>().Handle(messageInfo);
                }
                return;
            }

            throw new Exception($"message type error: {message.GetType().FullName}");
        }
Exemplo n.º 3
0
        public void Dispatch(Session session, PacketInfo packetInfo)
        {
            if (OpcodeHelper.IsClientHotfixMessage(packetInfo.Opcode))
            {
                HotfixCallback.Invoke(session, packetInfo);
                return;
            }

            Type     messageType = Game.Scene.GetComponent <OpcodeTypeComponent>().GetType(packetInfo.Opcode);
            IMessage message     = (IMessage)session.Network.MessagePacker.DeserializeFrom(messageType, packetInfo.Bytes, packetInfo.Index, packetInfo.Length);

            // 如果是帧同步消息,交给ClientFrameComponent处理
            FrameMessage frameMessage = message as FrameMessage;

            if (frameMessage != null)
            {
                Game.Scene.GetComponent <ClientFrameComponent>().Add(session, frameMessage);
                return;
            }

            // 普通消息或者是Rpc请求消息
            MessageInfo messageInfo = new MessageInfo(packetInfo.Opcode, message);

            Game.Scene.GetComponent <MessageDispatherComponent>().Handle(session, messageInfo);
        }
Exemplo n.º 4
0
        public void Dispatch(Session session, PacketInfo packetInfo)
        {
#if ILRuntime
// 热更消息抛到hotfix层
            if (OpcodeHelper.IsClientHotfixMessage(packetInfo.Header.Opcode))
            {
                Game.EventSystem.Run(EventIdType.RecvHotfixMessage, packetInfo);
                return;
            }
#endif


            Type     messageType = Game.Scene.GetComponent <OpcodeTypeComponent>().GetType(packetInfo.Opcode);
            IMessage message     = (IMessage)session.Network.MessagePacker.DeserializeFrom(messageType, packetInfo.Bytes, packetInfo.Index, packetInfo.Length);

            // 如果是帧同步消息,交给ClientFrameComponent处理
            FrameMessage frameMessage = message as FrameMessage;
            if (frameMessage != null)
            {
                Game.Scene.GetComponent <ClientFrameComponent>().Add(session, frameMessage);
                return;
            }

            // 普通消息或者是Rpc请求消息
            MessageInfo messageInfo = new MessageInfo(packetInfo.Opcode, message);
            Game.Scene.GetComponent <MessageDispatherComponent>().Handle(session, messageInfo);
        }
Exemplo n.º 5
0
 public void Awake()
 {
     Frame        = 0;
     FrameMessage = new FrameMessage()
     {
         Frame = Frame
     };
     //UpdateFrameAsync();
 }
Exemplo n.º 6
0
 public void Awake()
 {
     Frame             = 0;
     cacheFrameMessage = new FrameMessage()
     {
         Frame = Frame
     };
     FrameMessage = new FrameMessage()
     {
         Frame = Frame
     };
     UpdateFrameAsync();
     unitComponent = this.AddComponent <UnitComponent>();
 }
Exemplo n.º 7
0
        public async void UpdateFrameAsync()
        {
            TimerComponent timerComponent = Game.Scene.GetComponent <TimerComponent>();

            while (true)
            {
                if (Id == 0)
                {
                    return;
                }

                await timerComponent.WaitAsync(40);

                Broadcast(FrameMessage, unitComponent.GetAll());
                ++Frame;
                FrameMessage = new FrameMessage()
                {
                    Frame = Frame
                };
            }
        }
Exemplo n.º 8
0
        public void Dispatch(Session session, Opcode opcode, int offset, byte[] messageBytes, AMessage message)
        {
            // 如果是帧同步消息,交给ClientFrameComponent处理
            FrameMessage frameMessage = message as FrameMessage;

            if (frameMessage != null)
            {
                Game.Scene.GetComponent <ClientFrameComponent>().Add(session, frameMessage);
                return;
            }

            // 普通消息或者是Rpc请求消息
            if (message is AMessage || message is ARequest)
            {
                MessageInfo messageInfo = new MessageInfo(opcode, message);
                Game.Scene.GetComponent <MessageDispatherComponent>().Handle(session, messageInfo);
                return;
            }

            throw new Exception($"message type error: {message.GetType().FullName}");
        }
Exemplo n.º 9
0
        public void Dispatch(Session session, PacketInfo packetInfo)
        {
            Type     messageType = Game.Scene.GetComponent <OpcodeTypeComponent>().GetType(packetInfo.Header.Opcode);
            IMessage message     = (IMessage)session.Network.MessagePacker.DeserializeFrom(messageType, packetInfo.Bytes, packetInfo.Index, packetInfo.Length);

            // 如果是帧同步消息,交给ClientFrameComponent处理
            FrameMessage frameMessage = message as FrameMessage;

            if (frameMessage != null)
            {
                Game.Scene.GetComponent <ClientFrameComponent>().Add(session, frameMessage);
                return;
            }

            // 普通消息或者是Rpc请求消息
            if (message is IMessage || message is IRequest)
            {
                MessageInfo messageInfo = new MessageInfo(packetInfo.Header.Opcode, message);
                Game.Scene.GetComponent <MessageDispatherComponent>().Handle(session, messageInfo);
                return;
            }

            throw new Exception($"message type error: {message.GetType().FullName}");
        }