Browse Source

注册登录移植

guodong 3 years ago
parent
commit
3fd2ce718a

+ 1 - 1
GameClient/Assets/Game/CSShare

@@ -1 +1 @@
-Subproject commit 27d93a64bb0e2e686a7850ef06da727c0bfb9546
+Subproject commit 1a679ac3fea03b8a645925382d0369f4f4c3fe01

+ 51 - 0
GameClient/Assets/Game/HotUpdate/Controller/ErrorCodeController.cs

@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class ErrorCodeController
+    {
+        public static bool Handler(int errorCode)
+        {
+            if (errorCode == ET.ErrorCode.ERR_Success)
+            {
+                return false;
+            }
+            else if (errorCode == ET.ErrorCode.ERR_NetWorkError)
+            {
+                Alert.Show("连接服务器失败:\n请检查网络和服务器状态")
+                .SetRightButton(true, "知道啦", (object data) =>
+                {
+                    Application.Quit();
+                });
+            }
+            else if (errorCode == ET.ErrorCode.ERR_ClientVersionError)
+            {
+                Alert.Show("版本已更新,请联系研发获取最新版本")
+                    .SetLeftButton(true, "知道了", (data) => {
+                        Application.Quit();
+                    });
+            }
+            else if (errorCode == ET.ErrorCode.ERR_AntiAddiction)
+            {
+                string promptStr = "您属于未成年人,已被纳入防沉迷系统。每日22时至次日8时,本游戏将无法为未成年人用户提供游戏服务。";
+                Alert.Show(promptStr)
+                    .SetRightButton(true, "知道啦", (object data) =>
+                    {
+
+                    });
+            }
+            else
+            {
+                PromptController.Instance.ShowFloatTextPrompt("errorCode " + errorCode.ToString());
+                ET.Log.Error("errorCode" + errorCode.ToString());
+                return true;
+            }
+            return false;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Controller/ErrorCodeController.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 397eabf7217039c4a82687dda17d2a6e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 6 - 46
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -8,12 +8,11 @@ namespace GFGGame
 {
     public class GameController
     {
-        public static void Start()
+
+        public static async ET.ETTask Start()
         {
-            LoginProxy.SayHi((LoginResult result) =>
-            {
-                CheckShowLoginView();
-            });
+            await LoginController.CheckVersion();
+            CheckShowLoginView();
         }
 
         private static void CheckShowLoginView()
@@ -34,7 +33,7 @@ namespace GFGGame
                 {
                     if (doLogin)
                     {
-                        LoginProxy.LoginAsVisitor();
+                        //LoginProxy.LoginAsVisitor();
                     }
                     return true;
                 }
@@ -45,7 +44,7 @@ namespace GFGGame
                 {
                     if (doLogin)
                     {
-                        LoginProxy.Login(account, password);
+                        LoginController.Login(account, password, true).Coroutine();
                     }
                     return true;
                 }
@@ -53,45 +52,6 @@ namespace GFGGame
             return false;
         }
 
-        public static void OnLoginSuccess(LoginResult result)
-        {
-            ViewManager.Hide<LoginInputView>();
-            ViewManager.Hide<RegisterView>();
-            User user = result.user;
-            GameGlobal.userId = user.id;
-            GameGlobal.userAge = user.age;
-            if (GameGlobal.isVisitor)
-            {
-                PlayerPrefs.SetFloat(GameConst.VISITOR_ID_KEY, GameGlobal.userId);
-            }
-            else
-            {
-                PlayerPrefs.SetString(GameConst.ACCOUNT_LAST_LOGIN_KEY, user.account);
-                PlayerPrefs.SetString(GameConst.PASSWORD_LAST_LOGIN_KEY, user.password);
-            }
-            GameController.CheckSpecialAccount(user.account);
-            LocalCache.SetBool(GameConst.LAST_LOGIN_IS_VISITOR_KEY, GameGlobal.isVisitor);
-            PlayerPrefs.Save();
-            GameProxy.ReqRoleInfo(GameGlobal.userId);
-        }
-
-        public static void OnLoginFail(LoginResult result)
-        {
-            if (result.code == 107)
-            {
-                string promptStr = "您属于未成年人,已被纳入防沉迷系统。每日22时至次日8时,本游戏将无法为未成年人用户提供游戏服务。";
-                Alert.Show(promptStr)
-                    .SetRightButton(true, "知道啦", (object data) =>
-                    {
-
-                    });
-            }
-            else
-            {
-                ViewManager.Show<LoginInputView>();
-            }
-        }
-
         public static void CheckSpecialAccount(string account)
         {
             GameGlobal.antiAddiction = !(account.IndexOf("sygfg") == 0);

+ 80 - 0
GameClient/Assets/Game/HotUpdate/Controller/LoginController.cs

@@ -0,0 +1,80 @@
+using ET;
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class LoginController
+    {
+
+        public static async ET.ETTask CheckVersion()
+        {
+            ViewManager.Show<ModalStatusView>("连接中...");
+            int errorCode = 0;
+            errorCode = await ET.LoginHelper.CheckVersion(GameGlobal.zoneScene, ET.ConstValue.LoginAddress, GameConst.SERVER_VERSION);
+            ViewManager.Hide<ModalStatusView>();
+            if (errorCode != ET.ErrorCode.ERR_Success)
+            {
+                ErrorCodeController.Handler(errorCode);
+                await ETTask.Create();
+            }
+        }
+
+        public static async ET.ETTask Login(string account, string password, bool isMD5 = false)
+        {
+            ViewManager.Show<ModalStatusView>("登录中...");
+            int errorCode = await ET.LoginHelper.Login(GameGlobal.zoneScene, ET.ConstValue.LoginAddress, account, password, isMD5);
+            ViewManager.Hide<ModalStatusView>();
+            if (errorCode == ET.ErrorCode.ERR_Success)
+            {
+                GameGlobal.isVisitor = false;
+                ViewManager.Hide<LoginInputView>();
+                ViewManager.Hide<RegisterView>();
+                AccountInfoComponent accountInfoComponent = GameGlobal.zoneScene.GetComponent<AccountInfoComponent>();
+                GameGlobal.userId = accountInfoComponent.AccountId;
+                GameGlobal.userAge = accountInfoComponent.Age;
+                if (GameGlobal.isVisitor)
+                {
+                    //PlayerPrefs.SetFloat(GameConst.VISITOR_ID_KEY, GameGlobal.userId);
+                }
+                else
+                {
+                    var passwordMD5 = password;
+                    //密码禁止明文传输
+                    if (!isMD5)
+                    {
+                        passwordMD5 = MD5Helper.stringMD5(password);
+                    }
+                    PlayerPrefs.SetString(GameConst.ACCOUNT_LAST_LOGIN_KEY, account);
+                    PlayerPrefs.SetString(GameConst.PASSWORD_LAST_LOGIN_KEY, passwordMD5);
+                }
+                GameController.CheckSpecialAccount(account);
+                LocalCache.SetBool(GameConst.LAST_LOGIN_IS_VISITOR_KEY, GameGlobal.isVisitor);
+                PlayerPrefs.Save();
+                GameProxy.ReqRoleInfo(GameGlobal.userId);
+            }
+            else
+            {
+                if(ErrorCodeController.Handler(errorCode))
+                {
+                    ViewManager.Show<LoginInputView>();
+                }
+            }
+        }
+
+        public static async ETTask Register(string account, string password, string name, string identityNum, string code)
+        {
+            ViewManager.Show<ModalStatusView>("注册中...");
+            int errorCode = await LoginHelper.Register(GameGlobal.zoneScene, ET.ConstValue.LoginAddress, account, password, name, identityNum, code);
+            ViewManager.Hide<ModalStatusView>();
+            if (errorCode == ErrorCode.ERR_Success)
+            {
+                Login(account, password).Coroutine();
+            }
+            else
+            {
+                ErrorCodeController.Handler(errorCode);
+            }
+        }
+
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Controller/LoginController.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 115296ace6f2bcc47afe4ad082c33a6d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 72
GameClient/Assets/Game/HotUpdate/Net/Proxy/LoginProxy.cs

@@ -6,78 +6,7 @@ namespace GFGGame
 {
     public class LoginProxy
     {
-        private const string API_HI = "hi";
-        private const string API_LOGIN = "login";
-        private const string API_LOGIN_AS_VISITOR = "loginAsVisitor";
-        private const string API_REGISTER = "register";
-
-        public static void SayHi(Action<LoginResult> callback)
-        {
-            ViewManager.Show<ModalStatusView>("连接中...");
-            Get(API_HI, (LoginResult result) => {
-                ViewManager.Hide<ModalStatusView>();
-                if(result.version == GameConst.SERVER_VERSION || Application.isEditor)
-                {
-                    callback(result);
-                }
-                else
-                {
-                    Alert.Show("版本已更新,请联系研发获取最新版本")
-                    .SetLeftButton(true, "知道了", (data) => {
-                        Application.Quit();
-                    }); ;
-                }
-            });
-        }
-
-        public static void Login(string account, string password)
-        {
-            ViewManager.Show<ModalStatusView>("登录中...");
-            string data = JsonUtil.createJsonStr("account", account, "password", password);
-            Post(API_LOGIN, data, (LoginResult result) => {
-                ViewManager.Hide<ModalStatusView>();
-                if(result == null || result.code == 0) {
-                    GameGlobal.isVisitor = false;
-                    GameController.OnLoginSuccess(result);
-                } else {
-                    GameController.OnLoginFail(result);
-                }
-            });            
-        }
-
-        public static void LoginAsVisitor()
-        {
-            ViewManager.Show<ModalStatusView>("登录中...");
-            long id = (long)PlayerPrefs.GetFloat(GameConst.VISITOR_ID_KEY, -1);
-            string data = JsonUtil.createJsonStr("id", "" + id);
-            Post(API_LOGIN_AS_VISITOR, data, (LoginResult result) => {
-                ViewManager.Hide<ModalStatusView>();
-                if(result == null || result.code == 0)
-                {
-                    GameGlobal.isVisitor = true;
-                    GameController.OnLoginSuccess(result);
-                } else {
-                    GameController.OnLoginFail(result);
-                }
-            });  
-        }
-
-        public static void Register(string account, string password, string name, string identityNum, string code)
-        {
-            ViewManager.Show<ModalStatusView>("注册中...");
-            string data = JsonUtil.createJsonStr("account", account, "password", password, "name", name, "identityNum", identityNum, "code", code);
-            Post(API_REGISTER, data, (LoginResult result) => {
-                ViewManager.Hide<ModalStatusView>();
-                if(result == null || result.code == 0)
-                {
-                    GameGlobal.isVisitor = false;
-                    GameController.OnLoginSuccess(result);
-                } else {
-                    GameController.OnLoginFail(result);
-                }
-            });            
-        }
-
+        
         private static void Get(string methodName, Action<LoginResult> callback)
         {
             HttpTool.Instance.Get(GameGlobal.loginApiUrl, methodName, (string data) => {

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/Login/LoginInputView.cs

@@ -43,7 +43,7 @@ namespace GFGGame
 
         private void OnClickBtnSure()
         {
-            LoginProxy.Login(_ui.m_inputAccount.text, _ui.m_inputPassword.text);
+            LoginController.Login(_ui.m_inputAccount.text, _ui.m_inputPassword.text).Coroutine();
         }
 
         private void OnClickBtnCancel()

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/Login/RegisterView.cs

@@ -115,7 +115,7 @@ namespace GFGGame
                 }
             }
 
-            LoginProxy.Register(account, password, realName, idNumberStr, CODE);
+            LoginController.Register(account, password, realName, idNumberStr, CODE).Coroutine();
         }
 
         private void OnClickRichTextAgreeLink(string eventname)