MailBoxComponentSystem.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using ETModel;
  3. namespace ETHotfix
  4. {
  5. [ObjectSystem]
  6. public class MailBoxComponentAwakeSystem : AwakeSystem<MailBoxComponent>
  7. {
  8. public override void Awake(MailBoxComponent self)
  9. {
  10. self.MailboxType = MailboxType.MessageDispatcher;
  11. }
  12. }
  13. [ObjectSystem]
  14. public class MailBoxComponentAwake1System : AwakeSystem<MailBoxComponent, MailboxType>
  15. {
  16. public override void Awake(MailBoxComponent self, MailboxType mailboxType)
  17. {
  18. self.MailboxType = mailboxType;
  19. }
  20. }
  21. public static class MailBoxComponentSystem
  22. {
  23. public static async ETTask Handle(this MailBoxComponent self, Session session, IActorMessage message)
  24. {
  25. switch (self.MailboxType)
  26. {
  27. case MailboxType.GateSession:
  28. IActorMessage iActorMessage = message as IActorMessage;
  29. // 发送给客户端
  30. Session clientSession = self.Parent as Session;
  31. iActorMessage.ActorId = 0;
  32. clientSession.Send(iActorMessage);
  33. break;
  34. case MailboxType.MessageDispatcher:
  35. await ActorMessageDispatcherComponent.Instance.Handle(self.Parent, session, message);
  36. break;
  37. case MailboxType.UnOrderMessageDispatcher:
  38. self.HandleInner(session, message).Coroutine();
  39. break;
  40. }
  41. }
  42. private static async ETVoid HandleInner(this MailBoxComponent self, Session session, IActorMessage message)
  43. {
  44. await ActorMessageDispatcherComponent.Instance.Handle(self.Parent, session, message);
  45. }
  46. }
  47. }