C2G_LoginGateHandler.cs 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. namespace ET.Server
  3. {
  4. [MessageHandler(SceneType.Gate)]
  5. public class C2G_LoginGateHandler : AMRpcHandler<C2G_LoginGate, G2C_LoginGate>
  6. {
  7. protected override async ETTask Run(Session session, C2G_LoginGate request, G2C_LoginGate response, Action reply)
  8. {
  9. Scene scene = session.DomainScene();
  10. string account = scene.GetComponent<GateSessionKeyComponent>().Get(request.Key);
  11. if (account == null)
  12. {
  13. response.Error = ErrorCore.ERR_ConnectGateKeyError;
  14. response.Message = "Gate key验证失败!";
  15. reply();
  16. return;
  17. }
  18. session.RemoveComponent<SessionAcceptTimeoutComponent>();
  19. PlayerComponent playerComponent = scene.GetComponent<PlayerComponent>();
  20. Player player = playerComponent.AddChild<Player, string>(account);
  21. playerComponent.Add(player);
  22. session.AddComponent<SessionPlayerComponent>().PlayerId = player.Id;
  23. session.AddComponent<MailBoxComponent, MailboxType>(MailboxType.GateSession);
  24. response.PlayerId = player.Id;
  25. reply();
  26. await ETTask.CompletedTask;
  27. }
  28. }
  29. }