C2G_LoginGateHandler.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.Collections.Generic;
  3. namespace ET.Server
  4. {
  5. [MessageHandler(SceneType.Gate)]
  6. public class C2G_LoginGateHandler: AMRpcHandler<C2G_LoginGate, G2C_LoginGate>
  7. {
  8. protected override async ETTask Run(Session session, C2G_LoginGate request, G2C_LoginGate response, Action reply)
  9. {
  10. Scene scene = session.DomainScene();
  11. long userId = scene.GetComponent<GateTokenInfoComponent>().Get(request.Token);
  12. if (userId <= 0)
  13. {
  14. Log.Debug($"Gate token 登陆超时");
  15. response.Error = ErrorCore.ERR_ConnectGateKeyError;
  16. response.Message = "Gate token 登陆超时";
  17. reply();
  18. session.Disconnect().Coroutine();
  19. return;
  20. }
  21. // 移除session自动超时组件
  22. session.RemoveComponent<SessionAcceptTimeoutComponent>();
  23. PlayerComponent playerComponent = scene.GetComponent<PlayerComponent>();
  24. Player player = playerComponent.AddChild<Player, long>(userId);
  25. playerComponent.Add(player);
  26. session.AddComponent<SessionPlayerComponent>().PlayerId = player.Id;
  27. session.AddComponent<MailBoxComponent, MailboxType>(MailboxType.GateSession);
  28. response.Players = new List<PlayerBasic>(new PlayerBasic[] {
  29. new PlayerBasic{
  30. id = "1",
  31. uid = "1",
  32. name = "大爷",
  33. level = 1,
  34. exp = 1,
  35. gold = 66,
  36. }
  37. });
  38. reply();
  39. await ETTask.CompletedTask;
  40. }
  41. }
  42. }