using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class LoginManager : ManagerBase { 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 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; } } }