MIF_E31222569/Assets/ToothyV/Scripts/UI/AuntMenu.cs

136 lines
4.1 KiB
C#

using System;
using System.Collections;
using System.Threading.Tasks;
using TMPro;
using Unity.Services.Authentication;
using UnityEngine;
public class AuntMenu : Menu<AuntMenu>
{
[SerializeField] private GameObject loadingScreen;
[Header("Register")]
[SerializeField] private TMP_InputField usernameFieldRegister;
[SerializeField] private TMP_InputField nameFieldRegister;
[SerializeField] private TMP_InputField paswordFieldRegister;
[SerializeField] private TMP_InputField EmailFieldRegister;
[SerializeField] private TMP_Dropdown dateAgeRegister;
[SerializeField] private TMP_Dropdown monthAgeRegister;
[SerializeField] private TMP_Dropdown yearAgeRegister;
private string usernameRegister;
private string EmailRegister;
private string paswordRegister;
private int calculatedAge;
[SerializeField] private GameObject RegisterObj;
[SerializeField] private GameObject InvalidAge;
[Header("Login")]
[SerializeField] private TMP_InputField usernameFieldLogin;
[SerializeField] private TMP_InputField paswordFieldLogin;
private string usernameLogin;
private string passwordLogin;
SaveData saveData;
private void OnEnable()
{
AuthenticationService.Instance.SignedIn += NextToMenu;
}
private void Start()
{
StartCoroutine(LoadingScreen());
}
IEnumerator LoadingScreen()
{
loadingScreen.SetActive(true);
yield return new WaitForSeconds(2);
loadingScreen.SetActive(false);
}
private void OnDisable()
{
AuthenticationService.Instance.SignedIn -= NextToMenu;
}
private bool IsRegisterFieldInvalid()
{
if (string.IsNullOrEmpty(usernameFieldRegister.text) ||
string.IsNullOrEmpty(paswordFieldRegister.text) ||
string.IsNullOrEmpty(EmailFieldRegister.text))
{
Debug.LogWarning("Some required fields are empty!");
return true;
}
return false;
}
public async void Login()
{
usernameLogin = usernameFieldLogin.text.Trim();
passwordLogin = paswordFieldLogin.text.Trim();
if (string.IsNullOrEmpty(usernameLogin) || string.IsNullOrEmpty(passwordLogin))
{
Debug.LogWarning("Username or password is empty!");
return;
}
await AuthenticationManager.SigninUsernamePassword(usernameLogin, passwordLogin);
usernameFieldLogin.text = "";
paswordFieldLogin.text = "";
}
private void NextToMenu()
{
MainMenu.Open();
Debug.Log("MainMenu Open");
}
public async void Register()
{
if (IsRegisterFieldInvalid()) return;
usernameRegister = usernameFieldRegister.text;
paswordRegister = paswordFieldRegister.text;
EmailRegister = EmailFieldRegister.text;
int day = dateAgeRegister.value + 1;
int month = monthAgeRegister.value + 1;
int year = int.Parse(yearAgeRegister.options[yearAgeRegister.value].text);
DateTime birthDate = new DateTime(year, month, day);
calculatedAge = CalculateAge(birthDate);
//
// if (calculatedAge < 6 || calculatedAge > 12)
// {
// Debug.LogWarning("Age must be between 6 and 12 years!");
// Debug.Log(calculatedAge);
// InvalidAge.SetActive(true);
// return;
// }
await AuthenticationManager.SignUpUsernamePassword(usernameRegister, paswordRegister, EmailRegister, calculatedAge.ToString());
SaveData dataToSave = new SaveData();
dataToSave.playerName = nameFieldRegister.text;
dataToSave.agePlayer = calculatedAge.ToString();
dataToSave.username = CryptoUtility.Encrypt(usernameRegister);
dataToSave.password = CryptoUtility.Encrypt(paswordRegister);
await Cloudsave.SaveData(dataToSave, "DataPlayer");
}
private int CalculateAge(DateTime birthDate)
{
DateTime today = DateTime.Today;
int age = today.Year - birthDate.Year;
if (birthDate.Date > today.AddYears(-age)) age--;
return age;
}
}