AMEvent.cs 482 B

12345678910111213141516171819202122
  1. using System;
  2. using Base;
  3. namespace Base
  4. {
  5. public interface IMessageHandler
  6. {
  7. void Register<T>(ushort opcode, Action<Entity, T> action);
  8. void RegisterOpcode(Type type, ushort opcode);
  9. }
  10. public abstract class AMEvent<T>: IMRegister<IMessageHandler>
  11. {
  12. public abstract void Run(Entity scene, T message);
  13. public void Register(IMessageHandler component, ushort opcode)
  14. {
  15. component.RegisterOpcode(typeof(T), opcode);
  16. component.Register<T>(opcode, Run);
  17. }
  18. }
  19. }