C2G_LoginGameHandler.cs 1.1 KB

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