LoginController.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. using ET;
  2. using UnityEngine;
  3. namespace GFGGame
  4. {
  5. public class LoginController
  6. {
  7. public static async ET.ETTask CheckVersion()
  8. {
  9. ViewManager.Show<ModalStatusView>("连接中...");
  10. int errorCode = 0;
  11. errorCode = await ET.LoginHelper.CheckVersion(GameGlobal.zoneScene, ET.ConstValue.LoginAddress, GameConst.SERVER_VERSION);
  12. ViewManager.Hide<ModalStatusView>();
  13. if (errorCode != ET.ErrorCode.ERR_Success)
  14. {
  15. ErrorCodeController.Handler(errorCode);
  16. await ETTask.Create();
  17. }
  18. }
  19. public static async ET.ETTask Login(string account, string password, bool isMD5 = false)
  20. {
  21. ViewManager.Show<ModalStatusView>("登录中...");
  22. int errorCode = await ET.LoginHelper.Login(GameGlobal.zoneScene, ET.ConstValue.LoginAddress, account, password, isMD5);
  23. ViewManager.Hide<ModalStatusView>();
  24. if (errorCode == ET.ErrorCode.ERR_Success)
  25. {
  26. GameGlobal.isVisitor = false;
  27. ViewManager.Hide<LoginInputView>();
  28. ViewManager.Hide<RegisterView>();
  29. AccountInfoComponent accountInfoComponent = GameGlobal.zoneScene.GetComponent<AccountInfoComponent>();
  30. GameGlobal.userId = accountInfoComponent.AccountId;
  31. GameGlobal.userAge = accountInfoComponent.Age;
  32. if (GameGlobal.isVisitor)
  33. {
  34. //PlayerPrefs.SetFloat(GameConst.VISITOR_ID_KEY, GameGlobal.userId);
  35. }
  36. else
  37. {
  38. var passwordMD5 = password;
  39. //密码禁止明文传输
  40. if (!isMD5)
  41. {
  42. passwordMD5 = MD5Helper.stringMD5(password);
  43. }
  44. PlayerPrefs.SetString(GameConst.ACCOUNT_LAST_LOGIN_KEY, account);
  45. PlayerPrefs.SetString(GameConst.PASSWORD_LAST_LOGIN_KEY, passwordMD5);
  46. }
  47. GameController.CheckSpecialAccount(account);
  48. LocalCache.SetBool(GameConst.LAST_LOGIN_IS_VISITOR_KEY, GameGlobal.isVisitor);
  49. PlayerPrefs.Save();
  50. await GetServerInfos();
  51. await GetRoles();
  52. }
  53. else
  54. {
  55. if(ErrorCodeController.Handler(errorCode))
  56. {
  57. ViewManager.Show<LoginInputView>();
  58. }
  59. }
  60. }
  61. public static async ETTask Register(string account, string password, string name, string identityNum, string code)
  62. {
  63. ViewManager.Show<ModalStatusView>("注册中...");
  64. int errorCode = await LoginHelper.Register(GameGlobal.zoneScene, ET.ConstValue.LoginAddress, account, password, name, identityNum, code);
  65. ViewManager.Hide<ModalStatusView>();
  66. if (errorCode == ErrorCode.ERR_Success)
  67. {
  68. Login(account, password).Coroutine();
  69. }
  70. else
  71. {
  72. ErrorCodeController.Handler(errorCode);
  73. }
  74. }
  75. public static async ETTask GetServerInfos()
  76. {
  77. int errorCode = await LoginHelper.GetServerInfos(GameGlobal.zoneScene);
  78. if(errorCode != ErrorCode.ERR_Success)
  79. {
  80. ErrorCodeController.Handler(errorCode);
  81. await ETTask.Create();
  82. return;
  83. }
  84. var serverInfosComponent = GameGlobal.zoneScene.GetComponent<ServerInfosComponent>();
  85. if (serverInfosComponent.ServerInfoList.Count <= 0)
  86. {
  87. Alert.Show("服务器列表为空:\n请检查网络和服务器状态")
  88. .SetRightButton(true, "知道啦", (object data) =>
  89. {
  90. Application.Quit();
  91. });
  92. await ETTask.Create();
  93. return;
  94. }
  95. var serverInfo = serverInfosComponent.ServerInfoList[0];
  96. serverInfosComponent.CurrentServerId = int.Parse(serverInfo.Id.ToString());
  97. }
  98. public static async ETTask GetRoles()
  99. {
  100. int errorCode = await LoginHelper.GetRoles(GameGlobal.zoneScene);
  101. if(errorCode != ErrorCode.ERR_Success)
  102. {
  103. ErrorCodeController.Handler(errorCode);
  104. await ETTask.Create();
  105. }
  106. var roleInfosComponent = GameGlobal.zoneScene.GetComponent<RoleInfosComponent>();
  107. if (roleInfosComponent.RoleInfos != null && roleInfosComponent.RoleInfos.Count > 0)
  108. {
  109. var roleInfo = roleInfosComponent.RoleInfos[0];
  110. roleInfosComponent.CurrentRoleId = roleInfo.Id;
  111. await ReqEnterGame();
  112. }
  113. else
  114. {
  115. GameController.ShowCreateRole();
  116. }
  117. }
  118. public static async ETTask ReqCreateRole(string roleName)
  119. {
  120. int errorCode = await ET.LoginHelper.CreateRole(GameGlobal.zoneScene, roleName);
  121. if (errorCode != ErrorCode.ERR_Success)
  122. {
  123. ErrorCodeController.Handler(errorCode);
  124. return;
  125. }
  126. var roleInfosComponent = GameGlobal.zoneScene.GetComponent<RoleInfosComponent>();
  127. if (roleInfosComponent.RoleInfos != null && roleInfosComponent.RoleInfos.Count > 0)
  128. {
  129. var roleInfo = roleInfosComponent.RoleInfos[0];
  130. roleInfosComponent.CurrentRoleId = roleInfo.Id;
  131. await ReqEnterGame();
  132. }
  133. ViewManager.Hide(ViewName.CREATE_ROLE_VIEW);
  134. }
  135. public static async ETTask ReqEnterGame()
  136. {
  137. int errorCode = await LoginHelper.GetRealmKey(GameGlobal.zoneScene);
  138. if(errorCode != ErrorCode.ERR_Success)
  139. {
  140. ErrorCodeController.Handler(errorCode);
  141. return;
  142. }
  143. errorCode = await LoginHelper.EnterGame(GameGlobal.zoneScene);
  144. if (errorCode != ErrorCode.ERR_Success)
  145. {
  146. ErrorCodeController.Handler(errorCode);
  147. return;
  148. }
  149. ViewManager.Hide<LoginView>();
  150. }
  151. }
  152. }