hch
2025-06-05 07aee5604f365541c165f02bfe5437f1ed296fb5
Main/Core/NetworkPackage/GameNetSystem.cs
@@ -6,7 +6,7 @@
public class GameNetSystem : Singleton<GameNetSystem>
{
    // NetUpdateBehaviour m_NetUpdateBehaviour;
    NetUpdateBehaviour m_NetUpdateBehaviour;
    NeverConnectState neverConnectState;
    AccountLoginState accountLoginState;
    // CreateOrSelectRoleState createOrSelectRoleState;
@@ -78,26 +78,16 @@
        get { return mainSocket == null ? Time.time : (float)(DateTime.Now - mainSocket.lastPackageTime).TotalSeconds; }
    }
    public bool crossServerConnected_Loigc { get; set; }
    private ClientSocket crossServerSocket;
    public bool crossServerSocketConnected { get { return crossServerConnected_Loigc && (crossServerSocket == null ? false : crossServerSocket.connected); } }
    public float timeSinceCrossServerSocketLastProtocol
    {
        get { return crossServerSocket == null ? Time.time : (float)(DateTime.Now - crossServerSocket.lastPackageTime).TotalSeconds; }
    }
    Queue<GameNetPackBasic> mainProtocolQueue = new Queue<GameNetPackBasic>();
    Queue<GameNetPackBasic> crossSeverProtocolQueue = new Queue<GameNetPackBasic>();
    public CrossServerData crossServerData { get; private set; }
    public GameNetSystem()
    {
        var gameObject = new GameObject("NetUpdateBehaviour");
        GameObject.DontDestroyOnLoad(gameObject);
        // m_NetUpdateBehaviour = gameObject.AddComponent<NetUpdateBehaviour>();
        // m_NetUpdateBehaviour.RegisterUpdateCallBack(OnUpdate);
        GameObject.DontDestroyOnLoad(gameObject);
        m_NetUpdateBehaviour = gameObject.AddComponent<NetUpdateBehaviour>();
        m_NetUpdateBehaviour.RegisterUpdateCallBack(OnUpdate);
        neverConnectState = gameObject.AddComponent<NeverConnectState>();
        accountLoginState = gameObject.AddComponent<AccountLoginState>();
@@ -135,41 +125,6 @@
        });
    }
    public void BeginConnectCrossServer(string ip, int port, Action<bool> onConnected)
    {
        try
        {
            crossServerConnected_Loigc = false;
            if (crossServerSocketConnected)
            {
                crossServerSocket.CloseConnect();
            }
        }
        catch (System.Exception ex)
        {
            Debug.Log(ex);
        }
        crossServerSocket = new ClientSocket(ServerType.CrossSever);
        crossSeverProtocolQueue.Clear();
        this.crossServerSocket.Connect(ip, port, (bool ok) =>
        {
            if (onConnected != null)
            {
                onConnected(ok);
            }
        });
    }
    public void UpdateCrossServerData(string ip, int port, byte state)
    {
        this.crossServerData = new CrossServerData(ip, port, state);
        if (this.crossServerData.crossState == 0)
        {
            crossServerConnected_Loigc = false;
        }
    }
    public void SendInfo(GameNetPackBasic protocol)
    {
        if (mainSocket != null)
@@ -187,15 +142,6 @@
        }
    }
    public void SendToCrossServer(GameNetPackBasic protocol)
    {
        if (crossServerSocket != null)
        {
            protocol.socketType = ServerType.CrossSever;
            crossServerSocket.SendInfo(protocol);
            DebugPkgCache.Push(protocol);
        }
    }
    public void PushPackage(GameNetPackBasic protocol, ServerType type)
    {
@@ -208,17 +154,7 @@
            if (PackageRegedit.Contain(protocol.cmd))
            {
                switch (type)
                {
                    case ServerType.Main:
                        mainProtocolQueue.Enqueue(protocol);
                        break;
                    case ServerType.CrossSever:
                        crossSeverProtocolQueue.Enqueue(protocol);
                        break;
                    default:
                        break;
                }
                mainProtocolQueue.Enqueue(protocol);
                DebugPkgCache.Push(protocol);
            }
@@ -238,13 +174,7 @@
                mainSocket.CloseConnect();
            }
            if (crossServerSocket != null)
            {
                crossServerSocket.CloseConnect();
            }
            mainProtocolQueue.Clear();
            crossSeverProtocolQueue.Clear();
        }
        catch (Exception ex)
        {
@@ -255,30 +185,10 @@
            netState = NetState.DisConnected;
            // var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
            // loginModel.busy = false;
            // CrossServerLogin.Instance.busy = false;
        }
    }
    public void DisconnectCrossServer()
    {
        try
        {
            if (crossServerSocket != null)
            {
                crossServerSocket.CloseConnect();
            }
            crossSeverProtocolQueue.Clear();
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
        }
        finally
        {
            // CrossServerLogin.Instance.busy = false;
        }
    }
    public void Reconnect()
    {
@@ -289,13 +199,7 @@
                mainSocket.CloseConnect();
            }
            if (crossServerSocket != null)
            {
                crossServerSocket.CloseConnect();
            }
            mainProtocolQueue.Clear();
            crossSeverProtocolQueue.Clear();
        }
        catch (Exception ex)
        {
@@ -304,7 +208,6 @@
        finally
        {
            netState = NetState.AccountLogin;
            // CrossServerLogin.Instance.busy = false;
            // var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
            // loginModel.busy = false;
            // loginModel.ReAccountLogin();
@@ -320,20 +223,13 @@
        try
        {
            // ynmbxxjUtil.Instance.RoleLoginOut();
            crossServerConnected_Loigc = false;
            if (mainSocket != null)
            {
                mainSocket.CloseConnect();
            }
            if (crossServerSocket != null)
            {
                crossServerSocket.CloseConnect();
            }
            mainProtocolQueue.Clear();
            crossSeverProtocolQueue.Clear();
        }
        catch (Exception ex)
        {
@@ -344,11 +240,8 @@
            netState = NetState.NerverConnect;
            // TODO YYL
            // CrossServerLogin.Instance.busy = false;
            // //ArenaManager.isArenaClient = false;
            // var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
            // loginModel.busy = false;
            // WindowJumpMgr.Instance.ClearJumpData();
            // StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
            // {
@@ -395,14 +288,6 @@
                    PackageRegedit.Distribute(package);
                }
            }
            while (crossSeverProtocolQueue.Count > 0)
            {
                var package = crossSeverProtocolQueue.Dequeue();
                if (package != null)
                {
                    PackageRegedit.Distribute(package);
                }
            }
        }
    }
@@ -417,31 +302,10 @@
        DisConnected = 6,
    }
    public struct CrossServerData
    {
        public string ip;
        public int port;
        public CrossServerState crossState;
        public CrossServerData(string ip, int port, byte state)
        {
            this.ip = ip;
            this.port = port;
            this.crossState = (CrossServerState)state;
        }
    }
    public enum CrossServerState
    {
        No = 0,
        Yes = 1,
        Error = 2,
    }
}
public enum ServerType
{
    Main = 1,
    CrossSever = 2,
}