using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Diagnostics.Tracing;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using System.IO;
|
|
public class LoginWin : UIBase, ICanvasRaycastFilter
|
{
|
public static bool firstOpenEnd
|
{
|
get;
|
private set;
|
}
|
|
private string m_ServerIP = "mobile.173on.com";
|
private int m_Port = 9090;
|
private int m_GamePort = 19006;
|
|
|
[SerializeField] Image m_Logo;
|
// [SerializeField] UIAlphaTween m_AlphaTween;
|
[SerializeField] RectTransform m_WaitServerList;
|
[SerializeField] RectTransform m_ContainerEnterGame;
|
[SerializeField] RectTransform m_ContainerAccount;
|
[SerializeField] Image m_ServerState;
|
[SerializeField] Text m_ServerStateDescription;
|
[SerializeField] Text m_ServerName;
|
[SerializeField] protected InputField m_Account;
|
[SerializeField] Button m_EnterGame;
|
//[SerializeField] Button m_QQLogin;
|
//[SerializeField] Button m_WXLogin;
|
[SerializeField] Button m_ServerSelect;
|
[SerializeField] Button m_SwitchAccount;
|
[SerializeField] Button m_Notice;
|
//[SerializeField] Button m_UserHelp;
|
[SerializeField] Button m_CleanCache;
|
[SerializeField] Toggle checkRead;
|
[SerializeField] Button serverRead;
|
[SerializeField] Button hideRead;
|
[SerializeField] Button ageWarn;
|
[SerializeField] Text verInfo;
|
|
protected override void InitComponent()
|
{
|
base.InitComponent();
|
Debug.Log("初始化登录窗口");
|
|
#if UNITY_EDITOR
|
m_Account.onEndEdit.AddListener(x => { EnterGame(); });
|
#endif
|
m_EnterGame.SetListener(EnterGame);
|
//m_QQLogin.SetListener(QQLogin);
|
//m_WXLogin.SetListener(WXLogin);
|
m_ServerSelect.SetListener(OpenServerListWin);
|
m_SwitchAccount.SetListener(SwitchAccount);
|
m_Notice.SetListener(VeiwNotice);
|
//if (m_UserHelp)
|
//{
|
// m_UserHelp.SetListener(OpenUserHelp);
|
//}
|
|
m_CleanCache.SetListener(CleanCache);
|
|
serverRead.SetListener(() => {
|
GameAgeWarnWin.data = 1;
|
UIManager.Instance.OpenWindow<GameAgeWarnWin>();
|
});
|
|
hideRead.SetListener(() => {
|
GameAgeWarnWin.data = 2;
|
UIManager.Instance.OpenWindow<GameAgeWarnWin>();
|
});
|
ageWarn.SetListener(() => {
|
GameAgeWarnWin.data = 3;
|
UIManager.Instance.OpenWindow<GameAgeWarnWin>();
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
Debug.Log("打开登录窗口");
|
|
|
ServerListCenter.Instance.serverSelectEvent += OnServerChange;
|
ServerListCenter.Instance.onServerListRefreshEvent += OnServerListRefresh;
|
|
ServerListCenter.Instance.RequestPlayerServerList();
|
LoginManager.Instance.isLogined = false;
|
ServerListCenter.Instance.FiltrateDefaultServerAndServerGroup();
|
// m_AlphaTween.SetStartState();
|
|
Refresh();
|
|
// m_AlphaTween.Play(() => {
|
// firstOpenEnd = true;
|
// InGameDownLoad.Instance.downLoadGo = false;
|
// DownloadMgr.MaxDownLoadTask = InGameDownLoad.Instance.GetMaxTask();
|
// });
|
}
|
|
protected override void OnOpenAnimationComplete()
|
{
|
base.OnOpenAnimationComplete();
|
|
firstOpenEnd = true;
|
InGameDownLoad.Instance.downLoadGo = false;
|
DownloadMgr.MaxDownLoadTask = InGameDownLoad.Instance.GetMaxTask();
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
Debug.Log("关闭登录窗口");
|
ServerListCenter.Instance.serverSelectEvent -= OnServerChange;
|
ServerListCenter.Instance.onServerListRefreshEvent -= OnServerListRefresh;
|
|
SDKUtils.Instance.onFreePlatformLoginOk -= OnLoginOk;
|
SDKUtils.Instance.SendShowFloatWin();
|
}
|
|
public override void Refresh()
|
{
|
base.Refresh();
|
Debug.Log("刷新登录窗口");
|
|
//打包版本 + 功能版本 + 语言ID
|
verInfo.text = LoginManager.Instance.GetVersionStr();
|
|
var sprite = BuiltInLoader.LoadSprite("TB_DL_Logo");
|
m_Logo.overrideSprite = sprite;
|
m_Logo.SetNativeSize();
|
m_Logo.rectTransform.anchoredPosition = VersionConfig.Get().logoPosition;
|
m_Notice.SetActive(GameNotice.HasNotice());
|
|
|
bool hasNotice = GameNotice.HasNotice();
|
|
// 账号切换
|
m_SwitchAccount.SetActive(false);
|
// 用户帮助
|
// TODO YYL
|
var appId = VersionConfig.Get().appId;
|
var branch = VersionConfig.Get().branch;
|
// m_UserHelp.SetActive(ContactConfig.GetConfig(appId, branch) != null);
|
|
// 是否已经获取到服务器列表
|
bool isGetServerList = ServerListCenter.Instance.serverListGot;
|
m_WaitServerList.SetActive(!isGetServerList);
|
|
m_ContainerEnterGame.SetActive(isGetServerList);
|
m_ContainerAccount.SetActive(isGetServerList
|
&& (VersionConfig.Get().versionAuthority == VersionAuthority.InterTest || VersionConfig.Get().isBanShu));
|
m_EnterGame.SetActive(isGetServerList);
|
|
if (isGetServerList)
|
{
|
ChangeServerInfo(ServerListCenter.Instance.currentServer);
|
}
|
|
|
ChangeUserInfo(LoginManager.Instance.localSaveAccountName);
|
|
m_EnterGame.SetActive(true);
|
//m_QQLogin.SetActive(false);
|
//m_WXLogin.SetActive(false);
|
|
// 用户协议 todo
|
checkRead.isOn = LocalSave.GetBool("tqsecretToggle");
|
}
|
|
private void OnLoginOk(SDKUtils.FP_LoginOk arg0)
|
{
|
}
|
|
private void OnServerChange()
|
{
|
ChangeServerInfo(ServerListCenter.Instance.currentServer);
|
}
|
|
// private void OnLoginBtnClick()
|
// {
|
// // TODO 登录
|
// Debug.Log("登录" + username.text + " / " + password.text);
|
// CloseWindow();
|
|
// StageManager.Instance.ToGameScene();
|
// }
|
|
private void ChangeServerInfo(ServerData _serverData)
|
{
|
m_ServerName.text = _serverData.name.Replace("@gm", "");
|
m_ServerIP = _serverData.region_domain;
|
m_Port = _serverData.login_port;
|
m_GamePort = _serverData.game_port;
|
|
switch ((ServerState)_serverData.running_status)
|
{
|
case ServerState.Maintain:
|
case ServerState.Predicted:
|
m_ServerState.SetSprite("XT_FWQ_TB4");
|
m_ServerStateDescription.text = Language.GetFromLocal(29);
|
break;
|
case ServerState.Normal:
|
m_ServerState.SetSprite("XT_FWQ_TB2");
|
m_ServerStateDescription.text = Language.GetFromLocal(28);
|
break;
|
case ServerState.Busy:
|
m_ServerState.SetSprite("XT_FWQ_TB3");
|
m_ServerStateDescription.text = Language.GetFromLocal(27);
|
break;
|
case ServerState.Hot:
|
m_ServerState.SetSprite("XT_FWQ_TB1");
|
m_ServerStateDescription.text = Language.GetFromLocal(26);
|
break;
|
}
|
}
|
|
private void ChangeUserInfo(string user)
|
{
|
m_Account.text = user;
|
}
|
|
private void OnServerListRefresh()
|
{
|
m_WaitServerList.SetActive(!ServerListCenter.Instance.serverListGot);
|
m_ContainerEnterGame.SetActive(ServerListCenter.Instance.serverListGot);
|
m_ContainerAccount.SetActive(ServerListCenter.Instance.serverListGot
|
&& (VersionConfig.Get().versionAuthority == VersionAuthority.InterTest || VersionConfig.Get().isBanShu));
|
}
|
|
protected virtual void EnterGame()
|
{
|
if (!checkRead.isOn)
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("agreementTitle"), Language.Get("agreementInfo"));
|
LocalSave.SetBool("tqsecretToggle", false); //方便测试
|
return;
|
}
|
|
LocalSave.SetBool("tqsecretToggle", true);
|
|
SDKUtils.Instance.SendHideFloatWin();
|
|
Login();
|
|
//到这里一定是下载表结束
|
InGameDownLoad.Instance.SetDownloadMark();
|
}
|
|
protected void LateUpdate()
|
{
|
raycastTarget = true;
|
LoginManager.Instance.RequestServerListLoop();
|
}
|
|
|
//protected void QQLogin()
|
//{
|
// SDKUtils.Instance.TencentLogin("Login");
|
//}
|
|
//protected void WXLogin()
|
//{
|
// SDKUtils.Instance.TencentLogin("Loginwx");
|
//}
|
|
private void OpenServerListWin()
|
{
|
UIManager.Instance.OpenWindow<ServerListWin>();
|
}
|
|
private void SwitchAccount()
|
{
|
SDKUtils.Instance.FreePlatformLoginout();
|
LoginManager.Instance.sdkLogined = true;
|
}
|
|
private void VeiwNotice()
|
{
|
GameNotice.OpenGameNoticeForce();
|
}
|
|
//private void OpenUserHelp()
|
//{
|
// // TODO YYL
|
// // UIManager.Instance.OpenWindow<UserHelpWin>();
|
//}
|
|
protected void Login()
|
{
|
var allow = false;
|
if (DebugUtility.Instance.isWhiteListAccount)
|
{
|
allow = true;
|
}
|
else
|
{
|
if (ServerListCenter.Instance.currentServer.running_status == (int)ServerState.Maintain
|
|| ServerListCenter.Instance.currentServer.running_status == (int)ServerState.Predicted)
|
{
|
allow = false;
|
}
|
else
|
{
|
allow = true;
|
}
|
}
|
|
if (!allow)
|
{
|
switch ((ServerState)ServerListCenter.Instance.currentServer.running_status)
|
{
|
case ServerState.Maintain:
|
SysNotifyMgr.Instance.ShowTip("ServerDown");
|
break;
|
case ServerState.Predicted:
|
SysNotifyMgr.Instance.ShowTip("ServerOpen", ServerListCenter.Instance.currentServer.start_date.ToString("yyyy-MM-dd HH:mm"));
|
break;
|
}
|
|
return;
|
}
|
|
if (GameNetSystem.Instance.netState == GameNetSystem.NetState.NerverConnect)
|
{
|
switch (VersionConfig.Get().versionAuthority)
|
{
|
case VersionAuthority.InterTest:
|
if (string.IsNullOrEmpty(m_Account.text))
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1095"));
|
return;
|
}
|
|
LoginManager.Instance.AccountLogin(m_Account.text, m_ServerIP, m_Port, m_GamePort);
|
break;
|
case VersionAuthority.Release:
|
LoginManager.Instance.AccountLogin(m_ServerIP, m_Port, m_GamePort);
|
break;
|
}
|
|
// TODO YYL
|
// OperationLogCollect.Instance.RecordLauchEvent(6);
|
// OperationLogCollect.Instance.RecordEvent(7);
|
}
|
|
}
|
|
|
public void CleanCache()
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
|
Language.Get("CleanCache2"), (bool isOk) =>
|
{
|
if (isOk)
|
{
|
try
|
{
|
LocalSave.DeleteAll();
|
// 获取persistentDataPath下的所有文件和文件夹
|
string[] files = Directory.GetFiles(ResourcesPath.Instance.ExternalStorePath);
|
string[] dirs = Directory.GetDirectories(ResourcesPath.Instance.ExternalStorePath);
|
|
// 删除所有文件
|
foreach (string file in files)
|
{
|
File.Delete(file);
|
}
|
|
|
// 递归删除所有文件夹
|
foreach (string dir in dirs)
|
{
|
Directory.Delete(dir, true);
|
}
|
|
}
|
catch (System.Exception e)
|
{
|
Debug.LogError("Failed to clean persistent data: " + e.Message);
|
}
|
finally
|
{
|
Clock.AlarmAfter(0.1f, () =>
|
{
|
Application.Quit();
|
});
|
Debug.Log("Persistent data cleaned.");
|
}
|
|
}
|
});
|
|
|
}
|
}
|