MessageHelper.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. 
  2. namespace ET
  3. {
  4. public static class MessageHelper
  5. {
  6. public static void Broadcast(Unit unit, IActorMessage message)
  7. {
  8. var units = unit.Domain.GetComponent<UnitComponent>().GetAll();
  9. if (units == null) return;
  10. foreach (Unit u in units)
  11. {
  12. UnitGateComponent unitGateComponent = u.GetComponent<UnitGateComponent>();
  13. if (unitGateComponent.IsDisconnect)
  14. {
  15. continue;
  16. }
  17. SendActor(unitGateComponent.GateSessionActorId, message);
  18. }
  19. }
  20. /// <summary>
  21. /// 发送协议给ActorLocation
  22. /// </summary>
  23. /// <param name="id">注册Actor的Id</param>
  24. /// <param name="message"></param>
  25. public static void SendToLocationActor(long id, IActorLocationMessage message)
  26. {
  27. ActorLocationSenderComponent.Instance.Send(id, message);
  28. }
  29. /// <summary>
  30. /// 发送协议给Actor
  31. /// </summary>
  32. /// <param name="actorId">注册Actor的InstanceId</param>
  33. /// <param name="message"></param>
  34. public static void SendActor(long actorId, IActorMessage message)
  35. {
  36. ActorMessageSenderComponent.Instance.Send(actorId, message);
  37. }
  38. /// <summary>
  39. /// 发送RPC协议给Actor
  40. /// </summary>
  41. /// <param name="actorId">注册Actor的InstanceId</param>
  42. /// <param name="message"></param>
  43. /// <returns></returns>
  44. public static async ETTask<IActorResponse> CallActor(long actorId, IActorRequest message)
  45. {
  46. return await ActorMessageSenderComponent.Instance.Call(actorId, message);
  47. }
  48. /// <summary>
  49. /// 发送RPC协议给ActorLocation
  50. /// </summary>
  51. /// <param name="id">注册Actor的Id</param>
  52. /// <param name="message"></param>
  53. /// <returns></returns>
  54. public static async ETTask<IActorResponse> CallLocationActor(long id, IActorLocationRequest message)
  55. {
  56. return await ActorLocationSenderComponent.Instance.Call(id, message);
  57. }
  58. }
  59. }