MessageAction.cs 913 B

1234567891011121314151617181920212223242526272829303132
  1. using System;
  2. using System.Threading.Tasks;
  3. using Common.Event;
  4. using Common.Network;
  5. using Model;
  6. namespace Controller
  7. {
  8. [Action(ActionType.MessageAction)]
  9. public class MessageAction : IEventAsync
  10. {
  11. public async Task RunAsync(Env env)
  12. {
  13. AChannel channel = env.Get<AChannel>(EnvKey.Channel);
  14. ChannelUnitInfoComponent channelUnitInfoComponent =
  15. channel.GetComponent<ChannelUnitInfoComponent>();
  16. if (channelUnitInfoComponent != null)
  17. {
  18. Unit unit = World.Instance.GetComponent<UnitComponent>().Get(channelUnitInfoComponent.PlayerId);
  19. if (unit == null)
  20. {
  21. return;
  22. }
  23. unit.GetComponent<ActorComponent>().Add(env);
  24. return;
  25. }
  26. var message = env.Get<byte[]>(EnvKey.Message);
  27. int opcode = BitConverter.ToUInt16(message, 0);
  28. await World.Instance.GetComponent<EventComponent<MessageAttribute>>().RunAsync(opcode, env);
  29. }
  30. }
  31. }