Playvoi/Playvoi.Client/Assets/_Hub/Scripts/UI/LoginUI.cs

67 lines
No EOL
2 KiB
C#

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
}
}