using System; using Base; namespace Base { public interface IMessageHandler { void Register(ushort opcode, Action action); void RegisterOpcode(Type type, ushort opcode); } public abstract class AMEvent: IMRegister { public abstract void Run(Entity scene, T message); public void Register(IMessageHandler component, ushort opcode) { component.RegisterOpcode(typeof(T), opcode); component.Register(opcode, Run); } } }