yyl
2025-06-04 a7f4c5ecc5268c49f6a6caf769b3ebee6f237662
Main/System/Login/LoginManager.cs
File was renamed from Main/Manager/LoginManager.cs
@@ -1,383 +1,383 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class LoginManager : ManagerBase<LoginManager>
{
    public const uint DwVersionNo = 153518004;
    public readonly static string USER_ACCOUNT = Application.dataPath + "UserAccount";
    public readonly static string USER_PASSWORD = Application.dataPath + "UserPassword";
    public bool sdkLogined
    {
        get;
        set;
    } = false;
    public bool reconnectBackGround
    {
        get;
        set;
    } = false;
    public bool onCreateRole
    {
        get;
        set;
    } = false;
    public bool busy
    {
        get;
        set;
    } = false;
    int ServerListLoop = 200; //秒:在登录界面请求服务器列表的间隔
    long LastLoopSecond = 0; //上一次的请求时间 100纳秒单位
    public SDKUtils.FP_LoginOk sdkLoginResult;
    public SDKUtils.FP_CheckIDAuthentication sdkIDCheckIDAuthentication;
    public string localSaveAccountName
    {
        get { return LocalSave.GetString(USER_ACCOUNT); }
        set { LocalSave.SetString(USER_ACCOUNT, value); }
    }
    public event Action<bool> registerResultEvent;
    public event Action accountBindOkEvent;
    public event Action loginErrorEvent; //游戏启动后表格加载 模块加载失败的提示
    public string loginErrorInfo;
    public string ipBuf { get; private set; }
    public int portBuf { get; private set; }
    public int gamePortBuf { get; private set; }
    public string accountBuf { get; private set; }
    public string passwordBuf { get; private set; }
    public bool isLogined { get; set; }
    public override void Init()
    {
        SDKUtils.Instance.onFreePlatformLoginOk += OnSDKAccountLoginOk;
        SDKUtils.Instance.onFreePlatformLogoutOk += OnSDKAccountLoginOutOk;
        SDKUtils.Instance.onFreePlatformBindOk += OnSDKAccountBindOk;
        LaunchInHot.Instance.OnApplicationOut += OnApplicationOut;
    }
    public override void Release()
    {
        SDKUtils.Instance.onFreePlatformLoginOk -= OnSDKAccountLoginOk;
        SDKUtils.Instance.onFreePlatformLogoutOk -= OnSDKAccountLoginOutOk;
        SDKUtils.Instance.onFreePlatformBindOk -= OnSDKAccountBindOk;
        LaunchInHot.Instance.OnApplicationOut -= OnApplicationOut;
    }
    private void OnSDKAccountLoginOk(SDKUtils.FP_LoginOk _result)
    {
        sdkLogined = true;
        sdkLoginResult = _result;
        if (!DebugUtility.Instance.isWhiteListAccount)
        {
            DebugUtility.Instance.RequestWhiteListAuthority(sdkLoginResult.account);
        }
        ServerListCenter.Instance.RequestServerListPlayer(sdkLoginResult.account);
        SDKUtils.Instance.MakeKeyAndVisible();
        // TODO YYL
        // OperationLogCollect.Instance.RecordLauchEvent(5);
        GameNotice.OpenGameNotice();
    }
    private void OnSDKAccountLoginOutOk()
    {
        sdkLogined = false;
        sdkLoginResult = default(SDKUtils.FP_LoginOk);
        GameNetSystem.Instance.LoginOut();
    }
    private void OnSDKAccountBindOk()
    {
        sdkLoginResult.phone = 1;
        if (accountBindOkEvent != null)
        {
            accountBindOkEvent();
        }
    }
    private void OnGetIDAuthenticationInfo(SDKUtils.FP_CheckIDAuthentication _info)
    {
        sdkIDCheckIDAuthentication = _info;
    }
    public void AccountLogin(string _account, string _ip, int _port, int _gamePort)
    {
        Debug.LogFormat("账号登录, account:{0} ; ip:{1} ; port:{2} ; gamePort:{3}", _account, _ip, _port, _gamePort);
        isLogined = true;
        if (Application.internetReachability == NetworkReachability.NotReachable)
        {
            ConfirmCancel.ShowPopConfirm(
                Language.Get("Mail101"),
                Language.Get("L1116"),
                () => { }
                );
            return;
        }
        if (busy)
        {
            return;
        }
        busy = true;
        try
        {
            reconnectBackGround = false;
            accountBuf = _account;
            localSaveAccountName = accountBuf;
            ipBuf = _ip;
            portBuf = _port;
            gamePortBuf = _gamePort;
            ConnectGameServer(ipBuf, gamePortBuf);
            GameNetSystem.Instance.OnAccountLogin();
            NetLinkWin.Show();
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
            busy = false;
        }
    }
    public void AccountLogin(string _ip, int _port, int _gamePort)
    {
        if (sdkLogined)
        {
            AccountLogin(sdkLoginResult.account, _ip, _port, _gamePort);
        }
        else
        {
            SDKUtils.Instance.FreePlatformLogin();
        }
    }
    public void ReAccountLogin()
    {
        if (busy)
        {
            return;
        }
        busy = true;
        reconnectBackGround = true;
        try
        {
            ConnectGameServer(ipBuf, gamePortBuf);
            NetLinkWin.Show();
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
            busy = false;
        }
    }
    private void OnAccountLogin(bool _ok, string _result)
    {
        if (!_ok)
        {
            busy = false;
            Debug.LogError(_result);
            NetLinkWin.Hide();
            return;
        }
        if (string.IsNullOrEmpty(_result))
        {
            busy = false;
            ServerTipDetails.DisplayNormalTip(Language.Get("L1117"));
            NetLinkWin.Hide();
            return;
        }
        var stringSet = _result.Split('|');
        if (stringSet[0] != "OK")
        {
            if (stringSet.Length > 1)
            {
                ServerTipDetails.DisplayNormalTip(stringSet[1]);
            }
            busy = false;
            NetLinkWin.Hide();
            return;
        }
        localSaveAccountName = accountBuf;
        try
        {
            ConnectGameServer(ipBuf, gamePortBuf);
        }
        catch (Exception ex)
        {
            busy = false;
            Debug.Log(ex);
        }
    }
    void ConnectGameServer(string _ip, int _port)
    {
        GameNetSystem.Instance.BeginConnectGameServer(_ip, _port, OnGameServerConnected);
    }
    private void OnGameServerConnected(bool ok)
    {
        if (ok)
        {
            var sendInfo = new C0123_tagCClientPackVersion();
            sendInfo.Version = DwVersionNo;
            GameNetSystem.Instance.SendInfo(sendInfo);
        }
        else
        {
            busy = false;
        }
    }
    public void AccessLogin(H0101_tagServerPrepared _serverInfo)
    {
        GameNetSystem.Instance.SendInfo(Get0101SendPackage(_serverInfo)); // 登录
    }
    public void CheckClientVersion()
    {
        var sendInfo = new C010D_tagCClientVersion();
        sendInfo.Version = "10.1000.1";
        GameNetSystem.Instance.SendInfo(sendInfo);
    }
    private void OnApplicationOut()
    {
        var sendInfo = new C0103_tagCPlayerLogOut();
        sendInfo.Type = 1;
        GameNetSystem.Instance.SendInfo(sendInfo);
    }
    public void RequestServerListLoop()
    {
        long nowTick = DateTime.Now.Ticks;
        if (LastLoopSecond == 0)
        {
            LastLoopSecond = nowTick;
            return;
        }
        if ((nowTick - LastLoopSecond) / 10000000 > ServerListLoop)
        {
            Debug.Log("定时请求服务器列表");
            ServerListCenter.Instance.RequestServerCommonList();
            LastLoopSecond = nowTick;
        }
    }
    public C0101_tagCPlayerLogin Get0101SendPackage(H0101_tagServerPrepared _serverInfo)
        {
            var send = new C0101_tagCPlayerLogin();
            switch (VersionConfig.Get().versionAuthority)
            {
                case VersionAuthority.InterTest:
                    send.IDType = 1;
                    send.AccID = accountBuf;
                    if (sdkLoginResult == null)
                        send.Password = "111";
                    else
                        send.Password = sdkLoginResult.token;
                    send.MAC = DeviceUtility.GetMac();
                    send.Version = _serverInfo.Version;
                    send.LineNO = 255;
                    send.AppID = VersionConfig.Get().appId;
                    send.AccountID = 1000;// 内部登陆的时候的id
                    send.TokenExpire = "1519750743000";// 内部登陆的时长,无所谓的
                    send.Phone = 0;
                    send.ServerID = (uint)ServerListCenter.Instance.currentServer.region_flag;
                    send.Adult = 1;
                    send.ExtraLen = 0;
                    send.Extra = "";
                    break;
                case VersionAuthority.Release:
                    send.Extra = VersionConfig.Get().SpID + "|" + SDKUtils.Instance.Device.uniqueID;
                    send.ExtraLen = (ushort)send.Extra.Length;
                    if (SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.Free)
                    {
                        send.IDType = 1;
                        send.Password = sdkLoginResult.token;
                    }
                    else if (SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.Quick)
                    {
                        send.IDType = 10;
                        send.Extra += ("|" + sdkLoginResult.token + "|" + sdkLoginResult.qkUserName);
                        send.ExtraLen = (ushort)send.Extra.Length;
                    }
                    else if (SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.Hy ||
                        SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.hygt ||
                        SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.newyn ||
                        SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.en
                        )
                    {
                        send.IDType = (byte)SDKUtils.Instance.ChannelPlatform;
                        send.Extra += ("|" + sdkLoginResult.token + "|" + sdkLoginResult.qkUserName);
                        send.ExtraLen = (ushort)send.Extra.Length;
                    }
                    send.AccID = sdkLoginResult.account;
                    var deviceInfo = DeviceUtility.GetDeviceModel();
                    deviceInfo.Replace(" ", "").Replace("=", "").Replace("%", "").Replace("-", "").Replace("|","");
                    var versionStr = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", deviceInfo);
                    send.Extra += ("|" + versionStr.Substring(0, Math.Min(24, versionStr.Length)));
                    Debug.Log("=====> extra: " + send.Extra);
                    send.ExtraLen = (ushort)send.Extra.Length;
                    send.MAC = DeviceUtility.GetMac();
                    send.Version = _serverInfo.Version;
                    send.LineNO = 255;
                    send.AppID = VersionConfig.Get().appId;
                    send.AccountID = (uint)sdkLoginResult.accountID;
                    send.TokenExpire = sdkLoginResult.tokenExpire;
                    if (SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.Sp)
                    {
                        send.TokenExpire = SDKUtils.Instance.FreePlatformInfo.timeStamp;
                    }
                    send.Phone = (byte)sdkLoginResult.phone;
                    send.ServerID = (uint)ServerListCenter.Instance.currentServer.region_flag;
                    if (sdkIDCheckIDAuthentication.type == "1")
                    {
                        send.Adult = 1;
                    }
                    else if (sdkIDCheckIDAuthentication.type == "2")
                    {
                        send.Adult = MathUtility.CheckAdult(sdkIDCheckIDAuthentication.card_id) ? (byte)1 : (byte)0;
                    }
                    else
                    {
                        send.Adult = 0;
                    }
                    break;
            }
            return send;
        }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class LoginManager : ManagerBase<LoginManager>
{
    public const uint DwVersionNo = 153518004;
    public readonly static string USER_ACCOUNT = Application.dataPath + "UserAccount";
    public readonly static string USER_PASSWORD = Application.dataPath + "UserPassword";
    public bool sdkLogined
    {
        get;
        set;
    } = false;
    public bool reconnectBackGround
    {
        get;
        set;
    } = false;
    public bool onCreateRole
    {
        get;
        set;
    } = false;
    public bool busy
    {
        get;
        set;
    } = false;
    int ServerListLoop = 200; //秒:在登录界面请求服务器列表的间隔
    long LastLoopSecond = 0; //上一次的请求时间 100纳秒单位
    public SDKUtils.FP_LoginOk sdkLoginResult;
    public SDKUtils.FP_CheckIDAuthentication sdkIDCheckIDAuthentication;
    public string localSaveAccountName
    {
        get { return LocalSave.GetString(USER_ACCOUNT); }
        set { LocalSave.SetString(USER_ACCOUNT, value); }
    }
    public event Action<bool> registerResultEvent;
    public event Action accountBindOkEvent;
    public event Action loginErrorEvent; //游戏启动后表格加载 模块加载失败的提示
    public string loginErrorInfo;
    public string ipBuf { get; private set; }
    public int portBuf { get; private set; }
    public int gamePortBuf { get; private set; }
    public string accountBuf { get; private set; }
    public string passwordBuf { get; private set; }
    public bool isLogined { get; set; }
    public override void Init()
    {
        SDKUtils.Instance.onFreePlatformLoginOk += OnSDKAccountLoginOk;
        SDKUtils.Instance.onFreePlatformLogoutOk += OnSDKAccountLoginOutOk;
        SDKUtils.Instance.onFreePlatformBindOk += OnSDKAccountBindOk;
        LaunchInHot.Instance.OnApplicationOut += OnApplicationOut;
    }
    public override void Release()
    {
        SDKUtils.Instance.onFreePlatformLoginOk -= OnSDKAccountLoginOk;
        SDKUtils.Instance.onFreePlatformLogoutOk -= OnSDKAccountLoginOutOk;
        SDKUtils.Instance.onFreePlatformBindOk -= OnSDKAccountBindOk;
        LaunchInHot.Instance.OnApplicationOut -= OnApplicationOut;
    }
    private void OnSDKAccountLoginOk(SDKUtils.FP_LoginOk _result)
    {
        sdkLogined = true;
        sdkLoginResult = _result;
        if (!DebugUtility.Instance.isWhiteListAccount)
        {
            DebugUtility.Instance.RequestWhiteListAuthority(sdkLoginResult.account);
        }
        ServerListCenter.Instance.RequestServerListPlayer(sdkLoginResult.account);
        SDKUtils.Instance.MakeKeyAndVisible();
        // TODO YYL
        // OperationLogCollect.Instance.RecordLauchEvent(5);
        GameNotice.OpenGameNotice();
    }
    private void OnSDKAccountLoginOutOk()
    {
        sdkLogined = false;
        sdkLoginResult = default(SDKUtils.FP_LoginOk);
        GameNetSystem.Instance.LoginOut();
    }
    private void OnSDKAccountBindOk()
    {
        sdkLoginResult.phone = 1;
        if (accountBindOkEvent != null)
        {
            accountBindOkEvent();
        }
    }
    private void OnGetIDAuthenticationInfo(SDKUtils.FP_CheckIDAuthentication _info)
    {
        sdkIDCheckIDAuthentication = _info;
    }
    public void AccountLogin(string _account, string _ip, int _port, int _gamePort)
    {
        Debug.LogFormat("账号登录, account:{0} ; ip:{1} ; port:{2} ; gamePort:{3}", _account, _ip, _port, _gamePort);
        isLogined = true;
        if (Application.internetReachability == NetworkReachability.NotReachable)
        {
            ConfirmCancel.ShowPopConfirm(
                Language.Get("Mail101"),
                Language.Get("L1116"),
                () => { }
                );
            return;
        }
        if (busy)
        {
            return;
        }
        busy = true;
        try
        {
            reconnectBackGround = false;
            accountBuf = _account;
            localSaveAccountName = accountBuf;
            ipBuf = _ip;
            portBuf = _port;
            gamePortBuf = _gamePort;
            ConnectGameServer(ipBuf, gamePortBuf);
            GameNetSystem.Instance.OnAccountLogin();
            NetLinkWin.Show();
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
            busy = false;
        }
    }
    public void AccountLogin(string _ip, int _port, int _gamePort)
    {
        if (sdkLogined)
        {
            AccountLogin(sdkLoginResult.account, _ip, _port, _gamePort);
        }
        else
        {
            SDKUtils.Instance.FreePlatformLogin();
        }
    }
    public void ReAccountLogin()
    {
        if (busy)
        {
            return;
        }
        busy = true;
        reconnectBackGround = true;
        try
        {
            ConnectGameServer(ipBuf, gamePortBuf);
            NetLinkWin.Show();
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
            busy = false;
        }
    }
    private void OnAccountLogin(bool _ok, string _result)
    {
        if (!_ok)
        {
            busy = false;
            Debug.LogError(_result);
            NetLinkWin.Hide();
            return;
        }
        if (string.IsNullOrEmpty(_result))
        {
            busy = false;
            ServerTipDetails.DisplayNormalTip(Language.Get("L1117"));
            NetLinkWin.Hide();
            return;
        }
        var stringSet = _result.Split('|');
        if (stringSet[0] != "OK")
        {
            if (stringSet.Length > 1)
            {
                ServerTipDetails.DisplayNormalTip(stringSet[1]);
            }
            busy = false;
            NetLinkWin.Hide();
            return;
        }
        localSaveAccountName = accountBuf;
        try
        {
            ConnectGameServer(ipBuf, gamePortBuf);
        }
        catch (Exception ex)
        {
            busy = false;
            Debug.Log(ex);
        }
    }
    void ConnectGameServer(string _ip, int _port)
    {
        GameNetSystem.Instance.BeginConnectGameServer(_ip, _port, OnGameServerConnected);
    }
    private void OnGameServerConnected(bool ok)
    {
        if (ok)
        {
            var sendInfo = new C0123_tagCClientPackVersion();
            sendInfo.Version = DwVersionNo;
            GameNetSystem.Instance.SendInfo(sendInfo);
        }
        else
        {
            busy = false;
        }
    }
    public void AccessLogin(H0101_tagServerPrepared _serverInfo)
    {
        GameNetSystem.Instance.SendInfo(Get0101SendPackage(_serverInfo)); // 登录
    }
    public void CheckClientVersion()
    {
        var sendInfo = new C010D_tagCClientVersion();
        sendInfo.Version = "10.1000.1";
        GameNetSystem.Instance.SendInfo(sendInfo);
    }
    private void OnApplicationOut()
    {
        var sendInfo = new C0103_tagCPlayerLogOut();
        sendInfo.Type = 1;
        GameNetSystem.Instance.SendInfo(sendInfo);
    }
    public void RequestServerListLoop()
    {
        long nowTick = DateTime.Now.Ticks;
        if (LastLoopSecond == 0)
        {
            LastLoopSecond = nowTick;
            return;
        }
        if ((nowTick - LastLoopSecond) / 10000000 > ServerListLoop)
        {
            Debug.Log("定时请求服务器列表");
            ServerListCenter.Instance.RequestServerCommonList();
            LastLoopSecond = nowTick;
        }
    }
    public C0101_tagCPlayerLogin Get0101SendPackage(H0101_tagServerPrepared _serverInfo)
        {
            var send = new C0101_tagCPlayerLogin();
            switch (VersionConfig.Get().versionAuthority)
            {
                case VersionAuthority.InterTest:
                    send.IDType = 1;
                    send.AccID = accountBuf;
                    if (sdkLoginResult == null)
                        send.Password = "111";
                    else
                        send.Password = sdkLoginResult.token;
                    send.MAC = DeviceUtility.GetMac();
                    send.Version = _serverInfo.Version;
                    send.LineNO = 255;
                    send.AppID = VersionConfig.Get().appId;
                    send.AccountID = 1000;// 内部登陆的时候的id
                    send.TokenExpire = "1519750743000";// 内部登陆的时长,无所谓的
                    send.Phone = 0;
                    send.ServerID = (uint)ServerListCenter.Instance.currentServer.region_flag;
                    send.Adult = 1;
                    send.ExtraLen = 0;
                    send.Extra = "";
                    break;
                case VersionAuthority.Release:
                    send.Extra = VersionConfig.Get().SpID + "|" + SDKUtils.Instance.Device.uniqueID;
                    send.ExtraLen = (ushort)send.Extra.Length;
                    if (SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.Free)
                    {
                        send.IDType = 1;
                        send.Password = sdkLoginResult.token;
                    }
                    else if (SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.Quick)
                    {
                        send.IDType = 10;
                        send.Extra += ("|" + sdkLoginResult.token + "|" + sdkLoginResult.qkUserName);
                        send.ExtraLen = (ushort)send.Extra.Length;
                    }
                    else if (SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.Hy ||
                        SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.hygt ||
                        SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.newyn ||
                        SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.en
                        )
                    {
                        send.IDType = (byte)SDKUtils.Instance.ChannelPlatform;
                        send.Extra += ("|" + sdkLoginResult.token + "|" + sdkLoginResult.qkUserName);
                        send.ExtraLen = (ushort)send.Extra.Length;
                    }
                    send.AccID = sdkLoginResult.account;
                    var deviceInfo = DeviceUtility.GetDeviceModel();
                    deviceInfo.Replace(" ", "").Replace("=", "").Replace("%", "").Replace("-", "").Replace("|","");
                    var versionStr = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", deviceInfo);
                    send.Extra += ("|" + versionStr.Substring(0, Math.Min(24, versionStr.Length)));
                    Debug.Log("=====> extra: " + send.Extra);
                    send.ExtraLen = (ushort)send.Extra.Length;
                    send.MAC = DeviceUtility.GetMac();
                    send.Version = _serverInfo.Version;
                    send.LineNO = 255;
                    send.AppID = VersionConfig.Get().appId;
                    send.AccountID = (uint)sdkLoginResult.accountID;
                    send.TokenExpire = sdkLoginResult.tokenExpire;
                    if (SDKUtils.Instance.ChannelPlatform == SDKUtils.E_ChannelPlatform.Sp)
                    {
                        send.TokenExpire = SDKUtils.Instance.FreePlatformInfo.timeStamp;
                    }
                    send.Phone = (byte)sdkLoginResult.phone;
                    send.ServerID = (uint)ServerListCenter.Instance.currentServer.region_flag;
                    if (sdkIDCheckIDAuthentication.type == "1")
                    {
                        send.Adult = 1;
                    }
                    else if (sdkIDCheckIDAuthentication.type == "2")
                    {
                        send.Adult = MathUtility.CheckAdult(sdkIDCheckIDAuthentication.card_id) ? (byte)1 : (byte)0;
                    }
                    else
                    {
                        send.Adult = 0;
                    }
                    break;
            }
            return send;
        }
}