ClientDispatcher.cs 948 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. namespace Model
  3. {
  4. public class ClientDispatcher: IMessageDispatcher
  5. {
  6. public void Dispatch(Session session, ushort opcode, int offset, byte[] messageBytes, AMessage message)
  7. {
  8. // 如果是帧同步消息,交给ClientFrameComponent处理
  9. FrameMessage frameMessage = message as FrameMessage;
  10. if (frameMessage != null)
  11. {
  12. Game.Scene.GetComponent<ClientFrameComponent>().Add(frameMessage);
  13. return;
  14. }
  15. // 普通消息或者是Rpc请求消息
  16. if (message is AMessage || message is ARequest)
  17. {
  18. MessageInfo messageInfo = new MessageInfo(opcode, message);
  19. if (opcode < 2000)
  20. {
  21. Game.Scene.GetComponent<EventComponent>().Run(EventIdType.MessageDeserializeFinish, messageInfo);
  22. }
  23. else
  24. {
  25. Game.Scene.GetComponent<MessageDispatherComponent>().Handle(messageInfo);
  26. }
  27. return;
  28. }
  29. throw new Exception($"message type error: {message.GetType().FullName}");
  30. }
  31. }
  32. }