InnerMessageDispatcher.cs 777 B

1234567891011121314151617181920212223242526
  1. using System;
  2. namespace Model
  3. {
  4. public class InnerMessageDispatcher: IMessageDispatcher
  5. {
  6. public void Dispatch(Session session, ushort opcode, int offset, byte[] messageBytes, object message)
  7. {
  8. // 收到actor消息分发给actor自己去处理
  9. if (message is IActorMessage actorMessage)
  10. {
  11. Entity entity = Game.Scene.GetComponent<ActorManagerComponent>().Get(actorMessage.Id);
  12. entity.GetComponent<ActorComponent>().Add(new ActorMessageInfo() { Session = session, Message = actorMessage });
  13. return;
  14. }
  15. if (message is AMessage || message is ARequest)
  16. {
  17. Game.Scene.GetComponent<MessageDispatherComponent>().Handle(session, message);
  18. return;
  19. }
  20. throw new Exception($"message type error: {message.GetType().FullName}");
  21. }
  22. }
  23. }