C2G_LoginGateHandler.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. long userId = scene.GetComponent<GateTokenInfoComponent>().Get(request.Token);
  11. if (userId <= 0)
  12. {
  13. Log.Debug($"Gate token 登陆超时");
  14. response.Error = ErrorCore.ERR_ConnectGateKeyError;
  15. response.Message = "Gate token 登陆超时";
  16. reply();
  17. session.Disconnect().Coroutine();
  18. return;
  19. }
  20. // 移除session自动超时组件
  21. session.RemoveComponent<SessionAcceptTimeoutComponent>();
  22. PlayerComponent playerComponent = scene.GetComponent<PlayerComponent>();
  23. Player player = playerComponent.AddChild<Player, long>(userId);
  24. playerComponent.Add(player);
  25. session.AddComponent<SessionPlayerComponent>().PlayerId = player.Id;
  26. session.AddComponent<MailBoxComponent, MailboxType>(MailboxType.GateSession);
  27. response.Player = new ET.Player()
  28. {
  29. id = "1",
  30. uid = "1",
  31. name = "nickname",
  32. level = 1,
  33. exp = 1,
  34. vip = 0,
  35. hp = 1000,
  36. mp = 0,
  37. fightPower = 5,
  38. gold = 66,
  39. diamond = 77,
  40. energy = 0,
  41. };
  42. reply();
  43. await ETTask.CompletedTask;
  44. }
  45. }
  46. }