2026-04-16 14:57:19 +08:00

91 lines
2.8 KiB
C#

using Kill.Managers;
using UnityEngine;
using UnityEngine.UI;
using Kill.Utils;
using Kill.UI.Components;
using Kill.Network;
namespace Kill.UI.Pages
{
/// <summary>
/// 登录页面
/// </summary>
public class LoginPanel : LoginSubPageBase
{
[Header("输入组件")]
public InputField emailInput;
public Toggle privacyToggle;
[Header("显示组件")]
public Text errorText;
[Header("按钮")]
public Button loginBtn;
public Button toRegisterBtn;
public Button thirdPartyLoginBtn;
public Button privacyLinkBtn;
protected override void OnInitialize()
{
// 绑定按钮事件
if (loginBtn != null)
loginBtn.onClick.AddListener(OnLoginClick);
if (toRegisterBtn != null)
toRegisterBtn.onClick.AddListener(() => ShowPage(LoginPageCtrl.SubPageType.Register));
if (thirdPartyLoginBtn != null)
thirdPartyLoginBtn.onClick.AddListener(() =>LoginPageCtrl.Instance.OnGoogleLogin());
if (privacyLinkBtn != null)
privacyLinkBtn.onClick.AddListener(() => LoginPageCtrl.Instance.ShowPrivacyAgreementPlane());
}
protected override void OnShow()
{
// 页面显示时初始化隐私协议链接的显示状态
privacyToggle.isOn = true;
errorText.text = "";
emailInput.text = "";
}
private async void OnLoginClick()
{
string email = emailInput != null ? emailInput.text : "";
if (string.IsNullOrEmpty(email) || !ValidationUtils.IsValidEmailStrict(email))
{
errorText.text = LanguageManager.Instance.GetLanguage("100006");
return;
}
if (!privacyToggle.isOn)
{
LoginPageCtrl.Instance.ShowPrivacyAgreementTip(() =>
{
privacyToggle.isOn = true;
OnLoginClick();
});
return;
}
// 保存邮箱到登录控制器
LoginPageCtrl.Instance.SetCurrentEmail(email);
// 验证邮箱是否已注册
await LoginPageCtrl.Instance.CheckEmailRegistered(email,
onSuccess: (data) =>
{
if (data)
{
ShowPage(LoginPageCtrl.SubPageType.LoginPassword);
}
else
{
errorText.text = LanguageManager.Instance.GetLanguage("100035");
}
},
onError: (code, message) =>
{
errorText.text = message;
}
);
}
}
}