public void Add(Session session, FrameMessage frameMessage) { this.Queue.Enqueue(new SessionFrameMessage() { Session = session, FrameMessage = frameMessage }); }
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}"); }
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); }
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); }
public void Awake() { Frame = 0; FrameMessage = new FrameMessage() { Frame = Frame }; //UpdateFrameAsync(); }
public void Awake() { Frame = 0; cacheFrameMessage = new FrameMessage() { Frame = Frame }; FrameMessage = new FrameMessage() { Frame = Frame }; UpdateFrameAsync(); unitComponent = this.AddComponent <UnitComponent>(); }
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 }; } }
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}"); }
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}"); }