2026-04-16 14:57:19 +08:00
|
|
|
using Kill.Managers;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.UI;
|
2026-06-18 09:38:23 +08:00
|
|
|
using UnityEngine.Serialization;
|
2026-04-16 14:57:19 +08:00
|
|
|
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;
|
2026-06-18 09:38:23 +08:00
|
|
|
[FormerlySerializedAs("thirdPartyLoginBtn")]
|
|
|
|
|
public Button googleLoginBtn;
|
|
|
|
|
public Button appleLoginBtn;
|
2026-04-16 14:57:19 +08:00
|
|
|
public Button privacyLinkBtn;
|
|
|
|
|
protected override void OnInitialize()
|
|
|
|
|
{
|
|
|
|
|
// 绑定按钮事件
|
|
|
|
|
if (loginBtn != null)
|
|
|
|
|
loginBtn.onClick.AddListener(OnLoginClick);
|
|
|
|
|
|
|
|
|
|
if (toRegisterBtn != null)
|
|
|
|
|
toRegisterBtn.onClick.AddListener(() => ShowPage(LoginPageCtrl.SubPageType.Register));
|
|
|
|
|
|
2026-06-18 09:38:23 +08:00
|
|
|
if (googleLoginBtn != null)
|
|
|
|
|
{
|
|
|
|
|
googleLoginBtn.onClick.AddListener(() => LoginPageCtrl.Instance.OnGoogleLogin());
|
|
|
|
|
#if UNITY_ANDROID
|
|
|
|
|
googleLoginBtn.gameObject.SetActive(true);
|
|
|
|
|
#else
|
|
|
|
|
googleLoginBtn.gameObject.SetActive(false);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (appleLoginBtn != null)
|
|
|
|
|
{
|
|
|
|
|
appleLoginBtn.onClick.AddListener(() => LoginPageCtrl.Instance.OnAppleLogin());
|
|
|
|
|
#if UNITY_IOS
|
|
|
|
|
appleLoginBtn.gameObject.SetActive(true);
|
|
|
|
|
#else
|
|
|
|
|
appleLoginBtn.gameObject.SetActive(false);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
2026-04-16 14:57:19 +08:00
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|