AMEvent.cs 750 B

12345678910111213141516171819202122232425262728
  1. using System;
  2. namespace Base
  3. {
  4. public abstract class AMEvent<Message>: IMRegister where Message: AMessage
  5. {
  6. protected abstract void Run(Entity scene, Message message);
  7. public void Register(IMessageDispather component)
  8. {
  9. ushort opcode = component.GetOpcode(typeof (Message));
  10. component.RegisterHandler<Message>(opcode, Run);
  11. }
  12. }
  13. public abstract class AMRpcEvent<Request, Response> : IMRegister
  14. where Request : ARequest
  15. where Response: AResponse
  16. {
  17. protected abstract void Run(Entity scene, Request message, Action<Response> reply);
  18. public void Register(IMessageDispather component)
  19. {
  20. ushort opcode = component.GetOpcode(typeof(Request));
  21. component.RegisterRpcHandler<Request, Response>(opcode, Run);
  22. }
  23. }
  24. }