LoginHelper.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. namespace ET
  3. {
  4. public static class LoginHelper
  5. {
  6. public static async ETTask Login(Scene zoneScene, string address, string account, string password)
  7. {
  8. try
  9. {
  10. // 创建一个ETModel层的Session
  11. R2C_Login r2CLogin;
  12. using (Session session = zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(address)))
  13. {
  14. r2CLogin = (R2C_Login) await session.Call(new C2R_Login() { Account = account, Password = password });
  15. }
  16. // 创建一个gate Session,并且保存到SessionComponent中
  17. Session gateSession = zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(r2CLogin.Address));
  18. gateSession.AddComponent<PingComponent>();
  19. zoneScene.AddComponent<SessionComponent>().Session = gateSession;
  20. G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(
  21. new C2G_LoginGate() { Key = r2CLogin.Key, GateId = r2CLogin.GateId});
  22. Log.Debug("登陆gate成功!");
  23. await Game.EventSystem.Publish(new EventType.LoginFinish() {ZoneScene = zoneScene});
  24. }
  25. catch (Exception e)
  26. {
  27. Log.Error(e);
  28. }
  29. }
  30. }
  31. }