From fdfe40ac7aebbd5d681cd9408f89e4566081a85a Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 16 九月 2025 16:00:09 +0800
Subject: [PATCH] 0312 增加断线提示

---
 Main/Core/NetworkPackage/DataToCtl/AccountLoginState.cs                               |    2 
 Main/System/Login/DisconnectHintWin.cs                                                |   83 ++++++++++++++++
 Main/Core/NetworkPackage/DataToCtl/RoleLoginState.cs                                  |    4 
 Main/Manager/StageManager.cs                                                          |   17 +++
 Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0104_tagServerDisconnect.cs |   10 +-
 Main/System/Login/LoginWin.cs                                                         |   10 --
 Main/System/Login/DisconnectHintWin.cs.meta                                           |   11 ++
 Main/System/Login/ServerForceExitHintWin.cs.meta                                      |   11 ++
 Main/Core/NetworkPackage/GameNetSystem.cs                                             |   38 +------
 Main/Core/NetworkPackage/DataToCtl/ConnectedState.cs                                  |   22 ++--
 Main/System/Login/ServerForceExitHintWin.cs                                           |   65 +++++++++++++
 11 files changed, 212 insertions(+), 61 deletions(-)

diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0104_tagServerDisconnect.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0104_tagServerDisconnect.cs
index 41aa579..7b39cfd 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0104_tagServerDisconnect.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0104_tagServerDisconnect.cs
@@ -1,7 +1,7 @@
-using UnityEngine;
-using System.Collections;
-using System;
-
+using UnityEngine;
+using System.Collections;
+using System;
+
 //01 04 鏂嚎#tagServerDisconnect
 
 public class DTC0104_tagServerDisconnect : DtcBasic {
@@ -13,7 +13,7 @@
         {
             Debug.Log("DTC0104_tagServerDisconnect" + vNetData.Reason);
 
-            //ServerForceExitHintWin.reason = vNetData.Reason;
+            ServerForceExitHintWin.reason = vNetData.Reason;
             LoginManager.Instance.busy = false;
             if (VersionConfig.Get().versionAuthority == VersionAuthority.Release)
             {
diff --git a/Main/Core/NetworkPackage/DataToCtl/AccountLoginState.cs b/Main/Core/NetworkPackage/DataToCtl/AccountLoginState.cs
index 5e2d93c..7e6fa2e 100644
--- a/Main/Core/NetworkPackage/DataToCtl/AccountLoginState.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/AccountLoginState.cs
@@ -23,7 +23,7 @@
         if (Time.time > overTime)
         {
             GameNetSystem.Instance.LoginOut();
-            // ServerForceExitHintWin.reason = 111;
+            ServerForceExitHintWin.reason = 111;
         }
     }
 
diff --git a/Main/Core/NetworkPackage/DataToCtl/ConnectedState.cs b/Main/Core/NetworkPackage/DataToCtl/ConnectedState.cs
index 8f95f05..599e1ce 100644
--- a/Main/Core/NetworkPackage/DataToCtl/ConnectedState.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/ConnectedState.cs
@@ -73,16 +73,16 @@
 
     private void DetectConnected(int _seconds)
     {
-        connectedDetecting = true;
-
-        var sendInfo1 = new C0104_tagCOnlineReturn();
-        sendInfo1.Type = 0;
-        GameNetSystem.Instance.SendInfo(sendInfo1);// 鍦ㄧ嚎鍥炲簲
-
-        if (clock != null)
-        {
-            Clock.Stop(clock);
-        }
+        connectedDetecting = true;
+
+        var sendInfo1 = new C0104_tagCOnlineReturn();
+        sendInfo1.Type = 0;
+        GameNetSystem.Instance.SendInfo(sendInfo1);// 鍦ㄧ嚎鍥炲簲
+
+        if (clock != null)
+        {
+            Clock.Stop(clock);
+        }
         clock = Clock.AlarmAt(DateTime.Now + new TimeSpan(_seconds * TimeSpan.TicksPerSecond), OnDetectEnd);
     }
 
@@ -105,7 +105,7 @@
             {
                 case NetworkReachability.NotReachable:
                     GameNetSystem.Instance.Disconnect();
-                    // WindowCenter.Instance.Open<DisconnectHintWin>();
+                    UIManager.Instance.OpenWindow<DisconnectHintWin>();
                     break;
                 case NetworkReachability.ReachableViaCarrierDataNetwork:
                 case NetworkReachability.ReachableViaLocalAreaNetwork:
diff --git a/Main/Core/NetworkPackage/DataToCtl/RoleLoginState.cs b/Main/Core/NetworkPackage/DataToCtl/RoleLoginState.cs
index 66da6b0..9c25611 100644
--- a/Main/Core/NetworkPackage/DataToCtl/RoleLoginState.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/RoleLoginState.cs
@@ -28,7 +28,7 @@
         if (timer1 > OVERTIME_THRESHOLD_1)
         {
             GameNetSystem.Instance.Disconnect();
-            // WindowCenter.Instance.Open<DisconnectHintWin>();
+            UIManager.Instance.OpenWindow<DisconnectHintWin>();
         }
 
 
@@ -36,7 +36,7 @@
         if (timer2 > OVERTIME_THRESHOLD_2)
         {
             GameNetSystem.Instance.Disconnect();
-            // WindowCenter.Instance.Open<DisconnectHintWin>();
+            UIManager.Instance.OpenWindow<DisconnectHintWin>();
         }
     }
 
diff --git a/Main/Core/NetworkPackage/GameNetSystem.cs b/Main/Core/NetworkPackage/GameNetSystem.cs
index 5b1e167..3624dd9 100644
--- a/Main/Core/NetworkPackage/GameNetSystem.cs
+++ b/Main/Core/NetworkPackage/GameNetSystem.cs
@@ -183,8 +183,7 @@
         finally
         {
             netState = NetState.DisConnected;
-            // var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
-            // loginModel.busy = false;
+            LoginManager.Instance.busy = false;
         }
     }
 
@@ -208,21 +207,16 @@
         finally
         {
             netState = NetState.AccountLogin;
-            // var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
-            // loginModel.busy = false;
-            // loginModel.ReAccountLogin();
+            LoginManager.Instance.busy = false;
+            LoginManager.Instance.ReAccountLogin();
         }
     }
 
     public void LoginOut()
     {
-        // if (CameraController.Instance != null)
-        //     CameraController.Instance.SetInGame(false);
-        // DTC0102_tagCDBPlayer.isAfterPlayerDataInitialize = false;
-
         try
         {
-            // ynmbxxjUtil.Instance.RoleLoginOut();
+            SDKUtils.Instance.RoleLoginOut();
 
             if (mainSocket != null)
             {
@@ -238,31 +232,11 @@
         finally
         {
             netState = NetState.NerverConnect;
-            // TODO YYL
 
-            // var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
-            // loginModel.busy = false;
+            LoginManager.Instance.busy = false;
 
-            // StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
-            // {
-            //     toMapId = 1,
-            //     toLineId = 0,
-            //     needEmpty = false,
-            //     needLoadResource = true,
-            //     serverType = ServerType.Main,
-            //     isClientLoadMap = true
-            // });
-            // //CameraManager.uiCamera.clearFlags = CameraClearFlags.SolidColor;
-            // //GameObject obj = GameObject.Find("NormalCanvas");
-            // //int count = obj.transform.childCount;
-            // //for (int i = count - 1; i >= 0; --i)
-            // //{
-            // //    //Debug.LogError(obj.transform.GetChild(i).name);
-            // //    GameObject.Destroy(obj.transform.GetChild(i).gameObject);
-            // //}
-            // //SceneManager.LoadScene("Empty");
+            StageManager.Instance.ReturnToLoginScene();
             NetLinkWin.Hide();
-            // DTC0403_tagPlayerLoginLoadOK.neverLoginOk = true;
         }
     }
 
diff --git a/Main/Manager/StageManager.cs b/Main/Manager/StageManager.cs
index 95949e7..8bac2ec 100644
--- a/Main/Manager/StageManager.cs
+++ b/Main/Manager/StageManager.cs
@@ -52,6 +52,23 @@
         UIManager.Instance.OpenWindow<LoginWin>();
     }
 
+    // 杩斿洖鐧诲綍鐣岄潰 濡傛柇绾�
+    public void ReturnToLoginScene()
+    {
+        UIManager.Instance.DestroyAllUI();
+
+        SceneManager.LoadSceneAsync("Login");
+
+        currentStage = StageName.Login;
+        UIManager.Instance.OpenWindow<LaunchBackGroundWin>();
+        UIManager.Instance.OpenWindow<LoginWin>();
+
+        if (ServerForceExitHintWin.reason != 0)
+        {
+            UIManager.Instance.OpenWindow<ServerForceExitHintWin>();
+        }
+    }
+
     protected float GetManagerRequestDataProgress()
     {
         if (Main.managers.Count == 0)
diff --git a/Main/System/Login/DisconnectHintWin.cs b/Main/System/Login/DisconnectHintWin.cs
new file mode 100644
index 0000000..b20379c
--- /dev/null
+++ b/Main/System/Login/DisconnectHintWin.cs
@@ -0,0 +1,83 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Monday, November 20, 2017
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.SceneManagement;
+using UnityEngine.UI;
+
+
+public class DisconnectHintWin : UIBase
+{
+    [SerializeField] Text m_Content;
+    [SerializeField] Button m_Confirm;
+    [SerializeField] Button m_Cancel;
+
+    #region Built-in
+
+    protected override void InitComponent()
+    {
+        m_Cancel.AddListener(Cancel);
+        m_Confirm.AddListener(Confirm);
+    }
+
+    protected override void OnPreOpen()
+    {
+        if (StageManager.Instance.currentStage == StageName.Login)
+        {
+            m_Content.text = Language.Get("Disconnected_2");
+        }
+        else
+        {
+            m_Content.text = Language.Get("Disconnected_1");
+        }
+    }
+
+    #endregion
+
+    private void Confirm()
+    {
+        switch (Application.internetReachability)
+        {
+            case NetworkReachability.NotReachable:
+                GameNetSystem.Instance.LoginOut();
+                ServerForceExitHintWin.reason = 111;
+                break;
+            case NetworkReachability.ReachableViaCarrierDataNetwork:
+            case NetworkReachability.ReachableViaLocalAreaNetwork:
+                if (StageManager.Instance.currentStage == StageName.Login)
+                {
+                    LoginManager.Instance.busy = false;
+                    LoginManager.Instance.AccountLogin(LoginManager.Instance.accountBuf, LoginManager.Instance.ipBuf,
+                    LoginManager.Instance.portBuf, LoginManager.Instance.gamePortBuf);
+                }
+                else
+                {
+                    GameNetSystem.Instance.Reconnect();
+                }
+                break;
+        }
+
+        CloseWindow();
+    }
+
+    private void Cancel()
+    {
+        if (!(StageManager.Instance.currentStage == StageName.Login))
+        {
+            GameNetSystem.Instance.LoginOut();
+        }
+
+        CloseWindow();
+    }
+
+}
+
+
+
+
+
diff --git a/Main/System/Login/DisconnectHintWin.cs.meta b/Main/System/Login/DisconnectHintWin.cs.meta
new file mode 100644
index 0000000..651958b
--- /dev/null
+++ b/Main/System/Login/DisconnectHintWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: be709efee6ede2040a38bc53c2342fcc
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Login/LoginWin.cs b/Main/System/Login/LoginWin.cs
index 7de36c8..5f942a2 100644
--- a/Main/System/Login/LoginWin.cs
+++ b/Main/System/Login/LoginWin.cs
@@ -260,16 +260,6 @@
     }
 
 
-    //protected void QQLogin()
-    //{
-    //    SDKUtils.Instance.TencentLogin("Login");
-    //}
-
-    //protected void WXLogin()
-    //{
-    //    SDKUtils.Instance.TencentLogin("Loginwx");
-    //}
-
     private void OpenServerListWin()
     {
         UIManager.Instance.OpenWindow<ServerListWin>();
diff --git a/Main/System/Login/ServerForceExitHintWin.cs b/Main/System/Login/ServerForceExitHintWin.cs
new file mode 100644
index 0000000..e99d19a
--- /dev/null
+++ b/Main/System/Login/ServerForceExitHintWin.cs
@@ -0,0 +1,65 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Saturday, December 16, 2017
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class ServerForceExitHintWin : UIBase
+{
+    public static int reason = 0;
+
+    [SerializeField] Text m_Reason;
+    [SerializeField] Button m_Confirm;
+
+    #region Built-in
+
+    protected override void InitComponent()
+    {
+        m_Confirm.AddListener(ReturnToLogin);
+    }
+
+    protected override void OnPreOpen()
+    {
+        var kickConfig = KickOutReasonConfig.Get(reason);
+        m_Reason.text = kickConfig == null ? "" : kickConfig.kickout;
+    }
+
+
+
+    protected override void OnPreClose()
+    {
+    }
+
+
+    #endregion
+
+    private void ReturnToLogin()
+    {
+        reason = 0;
+        CloseWindow();
+        switch (VersionConfig.Get().versionAuthority)
+        {
+            case VersionAuthority.InterTest:
+                GameNotice.OpenGameNotice();
+                break;
+            case VersionAuthority.Release:
+                if (!VersionConfig.Get().isBanShu)
+                {
+                    if (!LoginManager.Instance.sdkLogined)
+                    {
+                        SDKUtils.Instance.FreePlatformLogin();
+                    }
+                }
+                break;
+        }
+    }
+
+}
+
+
diff --git a/Main/System/Login/ServerForceExitHintWin.cs.meta b/Main/System/Login/ServerForceExitHintWin.cs.meta
new file mode 100644
index 0000000..1262b2a
--- /dev/null
+++ b/Main/System/Login/ServerForceExitHintWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5c32599cf6864744e96d2a540d3a159c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

--
Gitblit v1.8.0