using System; using System.Text.RegularExpressions; using _Hub.Scripts.Network; using TMPro; using UnityEngine; using UnityEngine.UI; namespace _Hub.Scripts.UI { public class LoginUI : MonoBehaviour { #region Variables private const int _maxUsernameLength = 15; private const int _maxPasswordLength = 15; [SerializeField] private Button loginButton; [SerializeField] private TMP_InputField usernameInputField; [SerializeField] private TMP_InputField passwordInputField; private string _username = String.Empty; private string _password = String.Empty; #endregion #region Unity private void Awake() { loginButton.onClick.AddListener(OnLoginClick); usernameInputField.onValueChanged.AddListener(UpdateUsername); passwordInputField.onValueChanged.AddListener(UpdatePassword); } private void OnLoginClick() { } private void UpdateUsername(string username) { _username = username; Debug.Log("Username:" + username); ValidateAndUpdateUI(); } private void UpdatePassword(string password) { _password = password; Debug.Log("Password:" + password); ValidateAndUpdateUI(); } private void ValidateAndUpdateUI() { var usernameRegex = Regex.Match(_username, "^[a-zA-Z0-9]+$"); var interactable = (!string.IsNullOrWhiteSpace(_username) && !string.IsNullOrWhiteSpace(_password) && (_maxUsernameLength >= _username.Length && _maxPasswordLength >= _password.Length) && usernameRegex.Success); EnableLoginButton(interactable); } private void EnableLoginButton(bool interactable) { loginButton.interactable = interactable; } #endregion } }