MessageAction.cs 891 B

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