using System; using System.Threading.Tasks; using Common.Network; using Model; namespace Controller { [Event(EventType.MessageAction)] public class MessageAction: IEventAsync { public async Task RunAsync(Env env) { AChannel channel = env.Get(EnvKey.Channel); ChannelUnitInfoComponent channelUnitInfoComponent = channel.GetComponent(); if (channelUnitInfoComponent != null) { Unit unit = World.Instance.GetComponent().Get(channelUnitInfoComponent.PlayerId); if (unit == null) { return; } unit.GetComponent().Add(env); return; } var message = env.Get(EnvKey.Message); int opcode = BitConverter.ToUInt16(message, 0); await World.Instance.GetComponent>().RunAsync(opcode, env); } } }