using System; using TMPro; using UnityEngine; using UnityEngine.UI; namespace XGame { public class AuthRegisterLoginController : MonoBehaviour { private TMP_InputField loginUsernameField; private TMP_InputField loginPasswordField; private TMP_InputField registerUsernameField; private TMP_InputField registerPasswordField; private TMP_InputField registerConfirmField; private Toggle toggleRemember; private Button btnLogin; private Button btnRegister; private Button btnGuest; private Button btnTabLogin; private Button btnTabRegister; private GameObject loginForm; private GameObject registerForm; private GameObject rememberRow; private TMP_Text tipsText; private TMP_Text titleText; private TMP_Text rememberText; private string luaModule = "client/login"; private bool isRegisterMode; private bool isLoading; public Action OnLogin; public Action OnRegister; public Action OnGuestLogin; private void Awake() { CacheControls(); WireEvents(); SwitchLogin(); } public void Bind(string module) { if (!string.IsNullOrEmpty(module)) { luaModule = module; } } public void SetInitialState(string account, bool remember, bool autoLogin, bool agreement) { SetInitialState(account, string.Empty, remember, autoLogin, agreement); } public void SetInitialState(string account, string password, bool rememberPassword, bool autoLogin, bool agreement) { CacheControls(); SetInputText(loginUsernameField, account); SetInputText(loginPasswordField, rememberPassword ? password : string.Empty); SetInputText(registerUsernameField, account); if (toggleRemember != null) { toggleRemember.isOn = rememberPassword; } if (rememberText != null) { rememberText.text = "记住密码"; } } public void SetServerInfo(string serverName, string status) { } public void SetVersion(string version) { } public void SetLoading(bool loading) { isLoading = loading; SetButtonEnabled(btnLogin, !loading); SetButtonEnabled(btnRegister, !loading); SetButtonEnabled(btnGuest, !loading); SetButtonEnabled(btnTabLogin, !loading); SetButtonEnabled(btnTabRegister, !loading); if (loading) { ShowError(isRegisterMode ? "Registering..." : "Logging in..."); } } public void ShowError(string message) { CacheControls(); if (tipsText != null) { tipsText.text = message ?? string.Empty; } } public void Close() { Destroy(gameObject); } public void ToggleBaseAtlas() { } public void SwitchLogin() { isRegisterMode = false; SetActive(loginForm, true); SetActive(registerForm, false); SetActive(rememberRow, true); SetActive(btnLogin, true); SetActive(btnGuest, true); SetActive(btnRegister, false); if (titleText != null) { titleText.text = "Login"; } ShowError(string.Empty); } public void SwitchRegister() { isRegisterMode = true; SetActive(loginForm, false); SetActive(registerForm, true); SetActive(rememberRow, false); SetActive(btnLogin, false); SetActive(btnGuest, false); SetActive(btnRegister, true); if (titleText != null) { titleText.text = "Register"; } ShowError(string.Empty); } private void OnLoginClicked() { if (isLoading) { return; } OnLogin?.Invoke( GetInputText(loginUsernameField), GetInputText(loginPasswordField), toggleRemember != null && toggleRemember.isOn, false); } private void OnRegisterClicked() { if (isLoading) { return; } OnRegister?.Invoke( GetInputText(registerUsernameField), GetInputText(registerPasswordField), GetInputText(registerConfirmField)); } private void OnGuestClicked() { if (isLoading) { return; } OnGuestLogin?.Invoke( GetInputText(loginUsernameField), GetInputText(loginPasswordField), toggleRemember != null && toggleRemember.isOn, false); } private void CacheControls() { loginUsernameField = loginUsernameField ? loginUsernameField : Find("LoginUsernameField"); loginPasswordField = loginPasswordField ? loginPasswordField : Find("LoginPasswordField"); registerUsernameField = registerUsernameField ? registerUsernameField : Find("RegisterUsernameField"); registerPasswordField = registerPasswordField ? registerPasswordField : Find("RegisterPasswordField"); registerConfirmField = registerConfirmField ? registerConfirmField : Find("RegisterConfirmField"); toggleRemember = toggleRemember ? toggleRemember : Find("ToggleRemember"); btnLogin = btnLogin ? btnLogin : Find