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)  
 | 
        {  
 | 
            //  TODO YYL  
 | 
            // 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;  
 | 
            // TODO YYL  
 | 
            // ServerTipDetails.DisplayNormalTip(Language.Get("L1117"));  
 | 
            NetLinkWin.Hide();  
 | 
            return;  
 | 
        }  
 | 
  
 | 
        var stringSet = _result.Split('|');  
 | 
        if (stringSet[0] != "OK")  
 | 
        {  
 | 
            if (stringSet.Length > 1)  
 | 
            {  
 | 
                // TODO YYL  
 | 
                // 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)  
 | 
    {  
 | 
        //  TODO YYL  
 | 
        // if (ok)  
 | 
        // {  
 | 
        //     var sendInfo = new C0123_tagCClientPackVersion();  
 | 
        //     sendInfo.Version = DwVersionNo;  
 | 
        //     GameNetSystem.Instance.SendInfo(sendInfo);  
 | 
        // }  
 | 
        // else  
 | 
        // {  
 | 
        //     busy = false;  
 | 
        // }  
 | 
    }  
 | 
  
 | 
  
 | 
    //  TODO YYL  
 | 
    public void AccessLogin(/*H0101_tagServerPrepared _serverInfo*/)  
 | 
    {  
 | 
        // GameNetSystem.Instance.SendInfo(Get0101SendPackage(_serverInfo)); // 登录  
 | 
    }  
 | 
  
 | 
    public void CheckClientVersion()  
 | 
    {  
 | 
        //  TODO YYL  
 | 
        // var sendInfo = new C010D_tagCClientVersion();  
 | 
        // sendInfo.Version = "10.1000.1";  
 | 
        // GameNetSystem.Instance.SendInfo(sendInfo);  
 | 
    }  
 | 
  
 | 
    private void OnApplicationOut()  
 | 
    {  
 | 
        //  TODO YYL  
 | 
        // 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;  
 | 
        }  
 | 
    }  
 | 
}  
 |