hch
7 天以前 cb653cf75b17b9bdca0b5b9e6b88edf1ca72e90c
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);
        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)
        {
@@ -253,32 +183,11 @@
        finally
        {
            netState = NetState.DisConnected;
            // var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
            // loginModel.busy = false;
            // CrossServerLogin.Instance.busy = false;
            LoginManager.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 +198,7 @@
                mainSocket.CloseConnect();
            }
            if (crossServerSocket != null)
            {
                crossServerSocket.CloseConnect();
            }
            mainProtocolQueue.Clear();
            crossSeverProtocolQueue.Clear();
        }
        catch (Exception ex)
        {
@@ -304,36 +207,23 @@
        finally
        {
            netState = NetState.AccountLogin;
            // CrossServerLogin.Instance.busy = false;
            // 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();
            crossServerConnected_Loigc = false;
            SDKUtils.Instance.RoleLoginOut();
            if (mainSocket != null)
            {
                mainSocket.CloseConnect();
            }
            if (crossServerSocket != null)
            {
                crossServerSocket.CloseConnect();
            }
            mainProtocolQueue.Clear();
            crossSeverProtocolQueue.Clear();
        }
        catch (Exception ex)
        {
@@ -342,32 +232,11 @@
        finally
        {
            netState = NetState.NerverConnect;
            // 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()
            // {
            //     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");
            // NetLinkWin.Hide();
            // DTC0403_tagPlayerLoginLoadOK.neverLoginOk = true;
            LoginManager.Instance.busy = false;
            StageManager.Instance.ReturnToLoginScene();
            NetLinkWin.Hide();
        }
    }
@@ -393,14 +262,6 @@
                    PackageRegedit.Distribute(package);
                }
            }
            while (crossSeverProtocolQueue.Count > 0)
            {
                var package = crossSeverProtocolQueue.Dequeue();
                if (package != null)
                {
                    PackageRegedit.Distribute(package);
                }
            }
        }
    }
@@ -415,31 +276,11 @@
        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,
    B430 = 2,
}