Add Forgot pasword and Input birthday

This commit is contained in:
Shavira 2025-06-18 07:15:09 +07:00
parent a5ac8bf48d
commit 814c2bb2be
6 changed files with 14322 additions and 456 deletions

File diff suppressed because one or more lines are too long

View File

@ -115,10 +115,10 @@ RectTransform:
m_Father: {fileID: 5989088459606568522} m_Father: {fileID: 5989088459606568522}
m_RootOrder: 3 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 335, y: -375} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 670, y: 90} m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8196455824468203352 --- !u!222 &8196455824468203352
CanvasRenderer: CanvasRenderer:
@ -4104,10 +4104,10 @@ RectTransform:
m_Father: {fileID: 5989088459606568522} m_Father: {fileID: 5989088459606568522}
m_RootOrder: 2 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 335, y: -265} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 670, y: 90} m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &368031201146382263 --- !u!222 &368031201146382263
CanvasRenderer: CanvasRenderer:
@ -5813,10 +5813,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 3 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 485, y: -60} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088457945970232 --- !u!222 &5989088457945970232
CanvasRenderer: CanvasRenderer:
@ -7373,10 +7373,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 7 m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 485, y: -200} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458207346053 --- !u!222 &5989088458207346053
CanvasRenderer: CanvasRenderer:
@ -7601,10 +7601,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 5 m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 205, y: -200} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458209613039 --- !u!222 &5989088458209613039
CanvasRenderer: CanvasRenderer:
@ -8091,10 +8091,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 65, y: -60} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458342110391 --- !u!222 &5989088458342110391
CanvasRenderer: CanvasRenderer:
@ -9439,7 +9439,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 0 m_IsActive: 1
--- !u!224 &5989088458541418536 --- !u!224 &5989088458541418536
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -10179,10 +10179,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 6 m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 345, y: -200} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458741577436 --- !u!222 &5989088458741577436
CanvasRenderer: CanvasRenderer:
@ -11349,10 +11349,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 1 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 205, y: -60} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458907099098 --- !u!222 &5989088458907099098
CanvasRenderer: CanvasRenderer:
@ -13342,10 +13342,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 4 m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 65, y: -200} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459196100026 --- !u!222 &5989088459196100026
CanvasRenderer: CanvasRenderer:
@ -14484,7 +14484,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5989088459375460310 --- !u!224 &5989088459375460310
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -15560,10 +15560,10 @@ RectTransform:
m_Father: {fileID: 5989088459606568522} m_Father: {fileID: 5989088459606568522}
m_RootOrder: 1 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 335, y: -155} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 670, y: 90} m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459438126736 --- !u!222 &5989088459438126736
CanvasRenderer: CanvasRenderer:
@ -15758,10 +15758,10 @@ RectTransform:
m_Father: {fileID: 5989088459606568522} m_Father: {fileID: 5989088459606568522}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 335, y: -45} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 670, y: 90} m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459442087505 --- !u!222 &5989088459442087505
CanvasRenderer: CanvasRenderer:
@ -17867,10 +17867,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 2 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 345, y: -60} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459801418017 --- !u!222 &5989088459801418017
CanvasRenderer: CanvasRenderer:

File diff suppressed because it is too large Load Diff

View File

@ -5,20 +5,23 @@ using TMPro;
using Unity.Services.Authentication; using Unity.Services.Authentication;
using UnityEngine; using UnityEngine;
public class AuntMenu : Menu<AuntMenu> public class AuntMenu : Menu<AuntMenu>
{ {
[SerializeField] private GameObject loadingScreen; [SerializeField] private GameObject loadingScreen;
[Header("Register")] [Header("Register")]
[SerializeField] private TMP_InputField usernameFieldRegister; [SerializeField] private TMP_InputField usernameFieldRegister;
[SerializeField] private TMP_InputField nameFieldRegister; [SerializeField] private TMP_InputField nameFieldRegister;
[SerializeField] private TMP_InputField ageFieldRegister;
[SerializeField] private TMP_InputField paswordFieldRegister; [SerializeField] private TMP_InputField paswordFieldRegister;
[SerializeField] private TMP_InputField EmailFieldRegister; [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 usernameRegister;
private string AgeRegister;
private string EmailRegister; private string EmailRegister;
private string paswordRegister; private string paswordRegister;
private int calculatedAge;
[SerializeField] private GameObject RegisterObj; [SerializeField] private GameObject RegisterObj;
[SerializeField] private GameObject InvalidAge; [SerializeField] private GameObject InvalidAge;
@ -31,7 +34,6 @@ public class AuntMenu : Menu<AuntMenu>
SaveData saveData; SaveData saveData;
private void OnEnable() private void OnEnable()
{ {
AuthenticationService.Instance.SignedIn += NextToMenu; AuthenticationService.Instance.SignedIn += NextToMenu;
@ -54,30 +56,18 @@ public class AuntMenu : Menu<AuntMenu>
AuthenticationService.Instance.SignedIn -= NextToMenu; AuthenticationService.Instance.SignedIn -= NextToMenu;
} }
private bool IsRegisterFieldInvalid() private bool IsRegisterFieldInvalid()
{ {
if (string.IsNullOrEmpty(usernameFieldRegister.text)) if (string.IsNullOrEmpty(usernameFieldRegister.text) ||
string.IsNullOrEmpty(paswordFieldRegister.text) ||
string.IsNullOrEmpty(EmailFieldRegister.text))
{ {
Debug.LogWarning("Username field is empty!"); Debug.LogWarning("Some required fields are empty!");
return true; return true;
} }
if (string.IsNullOrEmpty(paswordFieldRegister.text))
{
Debug.LogWarning("Password field is empty!");
return true;
}
if (string.IsNullOrEmpty(EmailFieldRegister.text))
{
Debug.LogWarning("Email field is empty!");
return true;
}
return false; return false;
} }
public async void Login() public async void Login()
{ {
usernameLogin = usernameFieldLogin.text.Trim(); usernameLogin = usernameFieldLogin.text.Trim();
@ -95,7 +85,6 @@ public class AuntMenu : Menu<AuntMenu>
paswordFieldLogin.text = ""; paswordFieldLogin.text = "";
} }
private void NextToMenu() private void NextToMenu()
{ {
MainMenu.Open(); MainMenu.Open();
@ -109,35 +98,38 @@ public class AuntMenu : Menu<AuntMenu>
usernameRegister = usernameFieldRegister.text; usernameRegister = usernameFieldRegister.text;
paswordRegister = paswordFieldRegister.text; paswordRegister = paswordFieldRegister.text;
EmailRegister = EmailFieldRegister.text; EmailRegister = EmailFieldRegister.text;
AgeRegister = ageFieldRegister.text;
if (!int.TryParse(AgeRegister, out int age)) int day = dateAgeRegister.value + 1;
{ int month = monthAgeRegister.value + 1;
Debug.LogWarning("Age must be a valid number!"); int year = int.Parse(yearAgeRegister.options[yearAgeRegister.value].text);
return;
}
if (age < 6 || age > 12) DateTime birthDate = new DateTime(year, month, day);
{ calculatedAge = CalculateAge(birthDate);
Debug.LogWarning("Age must be between 6 and 12 years!"); //
InvalidAge.SetActive(true); // if (calculatedAge < 6 || calculatedAge > 12)
return; // {
} // Debug.LogWarning("Age must be between 6 and 12 years!");
// Debug.Log(calculatedAge);
// InvalidAge.SetActive(true);
// return;
// }
if (string.IsNullOrEmpty(usernameRegister) || string.IsNullOrEmpty(paswordRegister)) await AuthenticationManager.SignUpUsernamePassword(usernameRegister, paswordRegister, EmailRegister, calculatedAge.ToString());
{
Debug.LogWarning("Username or password is empty!");
return;
}
await AuthenticationManager.SignUpUsernamePassword(usernameRegister, paswordRegister, EmailRegister, AgeRegister);
SaveData dataToSave = new SaveData(); SaveData dataToSave = new SaveData();
dataToSave.playerName = nameFieldRegister.text; dataToSave.playerName = nameFieldRegister.text;
dataToSave.agePlayer = AgeRegister; dataToSave.agePlayer = calculatedAge.ToString();
dataToSave.username = CryptoUtility.Encrypt(usernameRegister); dataToSave.username = CryptoUtility.Encrypt(usernameRegister);
dataToSave.password = CryptoUtility.Encrypt(paswordRegister); dataToSave.password = CryptoUtility.Encrypt(paswordRegister);
await Cloudsave.SaveData(dataToSave, "DataPlayer"); 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;
}
} }

View File

@ -0,0 +1,30 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class ForgotPasword : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI emailTxt;
[SerializeField] private TextMeshProUGUI passwordTxt;
private void OnEnable()
{
string email = PlayerPrefs.GetString("emailLogin");
string password = PlayerPrefs.GetString("passwordLogin");
Debug.Log(email);
Debug.Log(password);
if (email != "" && password != "")
{
emailTxt.text = email;
passwordTxt.text = password;
}
else
{
emailTxt.text = "Belum Register";
passwordTxt.text = "Belum Register";
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ad41fe6ef6e7be64fbf31ea9d53678ac
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: