Merge branch 'main' of https://github.com/itsvraza/ToothyV
This commit is contained in:
commit
381209a405
|
|
@ -9,7 +9,7 @@ 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 paswordFieldRegister;
|
[SerializeField] private TMP_InputField paswordFieldRegister;
|
||||||
|
|
@ -26,7 +26,7 @@ public class AuntMenu : Menu<AuntMenu>
|
||||||
[SerializeField] private GameObject RegisterObj;
|
[SerializeField] private GameObject RegisterObj;
|
||||||
[SerializeField] private GameObject InvalidAge;
|
[SerializeField] private GameObject InvalidAge;
|
||||||
|
|
||||||
[Header("Login")]
|
[Header("Login")]
|
||||||
[SerializeField] private TMP_InputField usernameFieldLogin;
|
[SerializeField] private TMP_InputField usernameFieldLogin;
|
||||||
[SerializeField] private TMP_InputField paswordFieldLogin;
|
[SerializeField] private TMP_InputField paswordFieldLogin;
|
||||||
private string usernameLogin;
|
private string usernameLogin;
|
||||||
|
|
@ -99,20 +99,26 @@ public class AuntMenu : Menu<AuntMenu>
|
||||||
paswordRegister = paswordFieldRegister.text;
|
paswordRegister = paswordFieldRegister.text;
|
||||||
EmailRegister = EmailFieldRegister.text;
|
EmailRegister = EmailFieldRegister.text;
|
||||||
|
|
||||||
int day = dateAgeRegister.value + 1;
|
int day = dateAgeRegister.value + 1;
|
||||||
int month = monthAgeRegister.value + 1;
|
int month = monthAgeRegister.value + 1;
|
||||||
int year = int.Parse(yearAgeRegister.options[yearAgeRegister.value].text);
|
int year = int.Parse(yearAgeRegister.options[yearAgeRegister.value].text);
|
||||||
|
|
||||||
DateTime birthDate = new DateTime(year, month, day);
|
// Validasi tanggal + hitung umur
|
||||||
calculatedAge = CalculateAge(birthDate);
|
if (!TryGetValidAge(year, month, day, out calculatedAge))
|
||||||
//
|
{
|
||||||
// if (calculatedAge < 6 || calculatedAge > 12)
|
Debug.LogWarning("Tanggal tidak valid!");
|
||||||
// {
|
InvalidAge.SetActive(true);
|
||||||
// Debug.LogWarning("Age must be between 6 and 12 years!");
|
ResetRegisterFields();
|
||||||
// Debug.Log(calculatedAge);
|
return;
|
||||||
// InvalidAge.SetActive(true);
|
}
|
||||||
// return;
|
|
||||||
// }
|
if (calculatedAge < 6 || calculatedAge > 9)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("Usia harus antara 6 sampai 9 tahun!");
|
||||||
|
InvalidAge.SetActive(true);
|
||||||
|
ResetRegisterFields();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await AuthenticationManager.SignUpUsernamePassword(usernameRegister, paswordRegister, EmailRegister, calculatedAge.ToString());
|
await AuthenticationManager.SignUpUsernamePassword(usernameRegister, paswordRegister, EmailRegister, calculatedAge.ToString());
|
||||||
|
|
||||||
|
|
@ -125,6 +131,21 @@ public class AuntMenu : Menu<AuntMenu>
|
||||||
await Cloudsave.SaveData(dataToSave, "DataPlayer");
|
await Cloudsave.SaveData(dataToSave, "DataPlayer");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool TryGetValidAge(int year, int month, int day, out int age)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DateTime birthDate = new DateTime(year, month, day);
|
||||||
|
age = CalculateAge(birthDate);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (ArgumentOutOfRangeException)
|
||||||
|
{
|
||||||
|
age = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private int CalculateAge(DateTime birthDate)
|
private int CalculateAge(DateTime birthDate)
|
||||||
{
|
{
|
||||||
DateTime today = DateTime.Today;
|
DateTime today = DateTime.Today;
|
||||||
|
|
@ -132,4 +153,15 @@ public class AuntMenu : Menu<AuntMenu>
|
||||||
if (birthDate.Date > today.AddYears(-age)) age--;
|
if (birthDate.Date > today.AddYears(-age)) age--;
|
||||||
return age;
|
return age;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private void ResetRegisterFields()
|
||||||
|
{
|
||||||
|
usernameFieldRegister.text = "";
|
||||||
|
nameFieldRegister.text = "";
|
||||||
|
paswordFieldRegister.text = "";
|
||||||
|
EmailFieldRegister.text = "";
|
||||||
|
dateAgeRegister.value = 0;
|
||||||
|
monthAgeRegister.value = 0;
|
||||||
|
yearAgeRegister.value = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -11,8 +11,8 @@ public class PostTestMenu : Menu<PostTestMenu>
|
||||||
[SerializeField] TextMeshProUGUI questionText;
|
[SerializeField] TextMeshProUGUI questionText;
|
||||||
[SerializeField] List<QuestionSO> questions = new List<QuestionSO>();
|
[SerializeField] List<QuestionSO> questions = new List<QuestionSO>();
|
||||||
[SerializeField] GameObject[] answerButtons;
|
[SerializeField] GameObject[] answerButtons;
|
||||||
|
|
||||||
[Header("Answers")]
|
[Header("Answers")]
|
||||||
[SerializeField] private Sprite normalButttonSprite;
|
[SerializeField] private Sprite normalButttonSprite;
|
||||||
[SerializeField] private Sprite trueAnswerSprite;
|
[SerializeField] private Sprite trueAnswerSprite;
|
||||||
[SerializeField] private Sprite falseAnswerSprite;
|
[SerializeField] private Sprite falseAnswerSprite;
|
||||||
|
|
@ -33,12 +33,12 @@ public class PostTestMenu : Menu<PostTestMenu>
|
||||||
bool isComplete = false;
|
bool isComplete = false;
|
||||||
|
|
||||||
SaveData saveData;
|
SaveData saveData;
|
||||||
int correctAnswers = 0;
|
int correctAnswers = 0;
|
||||||
int totalQuestions = 10;
|
int totalQuestions = 10;
|
||||||
|
|
||||||
private int indexEnable = 0;
|
private int indexEnable = 0;
|
||||||
|
|
||||||
|
|
||||||
private async void OnEnable()
|
private async void OnEnable()
|
||||||
{
|
{
|
||||||
indexEnable++;
|
indexEnable++;
|
||||||
|
|
@ -86,7 +86,7 @@ public class PostTestMenu : Menu<PostTestMenu>
|
||||||
await EndGame();
|
await EndGame();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Image buttonImage;
|
Image buttonImage;
|
||||||
int index = Random.Range(0, questions.Count);
|
int index = Random.Range(0, questions.Count);
|
||||||
|
|
@ -109,10 +109,10 @@ public class PostTestMenu : Menu<PostTestMenu>
|
||||||
timer = timeToComplete;
|
timer = timeToComplete;
|
||||||
isAnswering = true;
|
isAnswering = true;
|
||||||
hasAnsweredEarly = false;
|
hasAnsweredEarly = false;
|
||||||
|
|
||||||
audioController.Instance.StopDubbing();
|
audioController.Instance.StopDubbing();
|
||||||
audioController.Instance.PlayDubbing(currentQuestion.dubbingName);
|
audioController.Instance.PlayDubbing(currentQuestion.dubbingName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnAnswerSelected(int index)
|
public void OnAnswerSelected(int index)
|
||||||
|
|
@ -132,7 +132,7 @@ public class PostTestMenu : Menu<PostTestMenu>
|
||||||
|
|
||||||
if (index == correctAnswerIndex)
|
if (index == correctAnswerIndex)
|
||||||
{
|
{
|
||||||
correctAnswers ++;
|
correctAnswers++;
|
||||||
Debug.Log("Jawab Benar");
|
Debug.Log("Jawab Benar");
|
||||||
selectedImage.sprite = trueAnswerSprite;
|
selectedImage.sprite = trueAnswerSprite;
|
||||||
questionText.text = "Jawaban Benar!";
|
questionText.text = "Jawaban Benar!";
|
||||||
|
|
@ -146,7 +146,7 @@ public class PostTestMenu : Menu<PostTestMenu>
|
||||||
saveData.postTestStatistik = (int)(((float)correctAnswers / totalQuestions) * 100f);
|
saveData.postTestStatistik = (int)(((float)correctAnswers / totalQuestions) * 100f);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowCorrectAnswer()
|
void ShowCorrectAnswer()
|
||||||
{
|
{
|
||||||
isAnswering = false;
|
isAnswering = false;
|
||||||
|
|
@ -168,10 +168,22 @@ public class PostTestMenu : Menu<PostTestMenu>
|
||||||
private async Task EndGame()
|
private async Task EndGame()
|
||||||
{
|
{
|
||||||
isComplete = true;
|
isComplete = true;
|
||||||
int finalScore = (int)(((float)correctAnswers / totalQuestions) * 100f);
|
int finalScore = (int)(((float)correctAnswers / totalQuestions) * 100f);
|
||||||
saveData.postTestStatistik = finalScore;
|
saveData.postTestStatistik = finalScore;
|
||||||
await Cloudsave.SaveData(saveData, "DataPlayer");
|
await Cloudsave.SaveData(saveData, "DataPlayer");
|
||||||
MainMenu.Open();
|
MainMenu.Open();
|
||||||
SelectLevel.Open();
|
SelectLevel.Open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
audioController.Instance.StopDubbing();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnBackPressed()
|
||||||
|
{
|
||||||
|
base.OnBackPressed();
|
||||||
|
audioController.Instance.StopDubbing();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ public class PreTestMenu : Menu<PreTestMenu>
|
||||||
|
|
||||||
[Header("UI")]
|
[Header("UI")]
|
||||||
[SerializeField] TextMeshProUGUI timerText;
|
[SerializeField] TextMeshProUGUI timerText;
|
||||||
|
|
||||||
[Header("Answers")]
|
[Header("Answers")]
|
||||||
[SerializeField] private Sprite normalButttonSprite;
|
[SerializeField] private Sprite normalButttonSprite;
|
||||||
[SerializeField] private Sprite trueAnswerSprite;
|
[SerializeField] private Sprite trueAnswerSprite;
|
||||||
[SerializeField] private Sprite falseAnswerSprite;
|
[SerializeField] private Sprite falseAnswerSprite;
|
||||||
|
|
@ -31,10 +31,10 @@ public class PreTestMenu : Menu<PreTestMenu>
|
||||||
|
|
||||||
QuestionSO currentQuestion;
|
QuestionSO currentQuestion;
|
||||||
bool isComplete = false;
|
bool isComplete = false;
|
||||||
|
|
||||||
SaveData saveData;
|
SaveData saveData;
|
||||||
|
|
||||||
int correctAnswers = 0;
|
int correctAnswers = 0;
|
||||||
int totalQuestions = 10;
|
int totalQuestions = 10;
|
||||||
|
|
||||||
private int indexEnable = 0;
|
private int indexEnable = 0;
|
||||||
|
|
@ -51,15 +51,15 @@ public class PreTestMenu : Menu<PreTestMenu>
|
||||||
|
|
||||||
private async Task LoadAndRefresh()
|
private async Task LoadAndRefresh()
|
||||||
{
|
{
|
||||||
saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
|
saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
|
||||||
saveData.isPreTestComplete = true;
|
saveData.isPreTestComplete = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
if (isComplete) return;
|
if (isComplete) return;
|
||||||
|
|
||||||
if(indexEnable == 0) return;
|
if (indexEnable == 0) return;
|
||||||
if (isComplete) return;
|
if (isComplete) return;
|
||||||
|
|
||||||
timer -= Time.deltaTime;
|
timer -= Time.deltaTime;
|
||||||
|
|
@ -113,7 +113,7 @@ public class PreTestMenu : Menu<PreTestMenu>
|
||||||
timer = timeToComplete;
|
timer = timeToComplete;
|
||||||
isAnswering = true;
|
isAnswering = true;
|
||||||
hasAnsweredEarly = false;
|
hasAnsweredEarly = false;
|
||||||
|
|
||||||
audioController.Instance.StopDubbing();
|
audioController.Instance.StopDubbing();
|
||||||
audioController.Instance.PlayDubbing(currentQuestion.dubbingName);
|
audioController.Instance.PlayDubbing(currentQuestion.dubbingName);
|
||||||
}
|
}
|
||||||
|
|
@ -169,10 +169,21 @@ public class PreTestMenu : Menu<PreTestMenu>
|
||||||
private async Task EndGame()
|
private async Task EndGame()
|
||||||
{
|
{
|
||||||
isComplete = true;
|
isComplete = true;
|
||||||
int finalScore = (int)(((float)correctAnswers / totalQuestions) * 100f);
|
int finalScore = (int)(((float)correctAnswers / totalQuestions) * 100f);
|
||||||
saveData.preTestStatistik = finalScore;
|
saveData.preTestStatistik = finalScore;
|
||||||
await Cloudsave.SaveData(saveData, "DataPlayer");
|
await Cloudsave.SaveData(saveData, "DataPlayer");
|
||||||
MainMenu.Open();
|
MainMenu.Open();
|
||||||
SelectLevel.Open();
|
SelectLevel.Open();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
audioController.Instance.StopDubbing();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnBackPressed()
|
||||||
|
{
|
||||||
|
base.OnBackPressed();
|
||||||
|
audioController.Instance.StopDubbing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -9,7 +9,7 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
[SerializeField] TextMeshProUGUI questionText;
|
[SerializeField] TextMeshProUGUI questionText;
|
||||||
[SerializeField] QuestionSO currentQuestion;
|
[SerializeField] QuestionSO currentQuestion;
|
||||||
|
|
||||||
[Header("Answers")]
|
[Header("Answers")]
|
||||||
[SerializeField] private Sprite normalButttonSprite;
|
[SerializeField] private Sprite normalButttonSprite;
|
||||||
[SerializeField] private Sprite trueAnswerSprite;
|
[SerializeField] private Sprite trueAnswerSprite;
|
||||||
[SerializeField] private Sprite falseAnswerSprite;
|
[SerializeField] private Sprite falseAnswerSprite;
|
||||||
|
|
@ -26,7 +26,7 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
public bool isComplete = false;
|
public bool isComplete = false;
|
||||||
|
|
||||||
bool isGameOver = false;
|
bool isGameOver = false;
|
||||||
|
|
||||||
//========================
|
//========================
|
||||||
[SerializeField] float timeToCompleteQuestion = 30f;
|
[SerializeField] float timeToCompleteQuestion = 30f;
|
||||||
[SerializeField] float timeToShowCorrectAnswer = 10f;
|
[SerializeField] float timeToShowCorrectAnswer = 10f;
|
||||||
|
|
@ -46,7 +46,7 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
correctAnswerIndex = currentQuestion.answerIndex;
|
correctAnswerIndex = currentQuestion.answerIndex;
|
||||||
|
|
||||||
timerValue = timeToCompleteQuestion;
|
timerValue = timeToCompleteQuestion;
|
||||||
isAnsweringQuestion = true;
|
isAnsweringQuestion = true;
|
||||||
fillFraction = 1f;
|
fillFraction = 1f;
|
||||||
loadNextQuestion = false;
|
loadNextQuestion = false;
|
||||||
hasAnsweredEarly = false;
|
hasAnsweredEarly = false;
|
||||||
|
|
@ -57,7 +57,7 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
PlayDubbingQuestion();
|
PlayDubbingQuestion();
|
||||||
audioController.Instance.bgmSource.volume = .1f;
|
audioController.Instance.bgmSource.volume = .1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDisable()
|
private void OnDisable()
|
||||||
{
|
{
|
||||||
isAnsweringQuestion = false;
|
isAnsweringQuestion = false;
|
||||||
|
|
@ -75,18 +75,22 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
button.interactable = true;
|
button.interactable = true;
|
||||||
|
|
||||||
Image buttonImage = answerButtons[i].GetComponent<Image>();
|
Image buttonImage = answerButtons[i].GetComponent<Image>();
|
||||||
buttonImage.color = Color.white;
|
buttonImage.color = Color.white;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timerImage != null)
|
if (timerImage != null)
|
||||||
{
|
{
|
||||||
timerImage.fillAmount = 1f;
|
timerImage.fillAmount = 1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
audioController.Instance.bgmSource.volume = 1f;
|
|
||||||
|
|
||||||
|
if (audioController.Instance != null)
|
||||||
|
{
|
||||||
|
audioController.Instance.StopDubbing();
|
||||||
|
audioController.Instance.bgmSource.volume = 1f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
if (gameManager == null)
|
if (gameManager == null)
|
||||||
|
|
@ -95,13 +99,13 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
}
|
}
|
||||||
StateLoadQuestion();
|
StateLoadQuestion();
|
||||||
UpdateTimer();
|
UpdateTimer();
|
||||||
if(isComplete)
|
if (isComplete)
|
||||||
{
|
{
|
||||||
Debug.Log("Game Over");
|
Debug.Log("Game Over");
|
||||||
isComplete = false;
|
isComplete = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CancelTimer()
|
public void CancelTimer()
|
||||||
{
|
{
|
||||||
timerValue = 0;
|
timerValue = 0;
|
||||||
|
|
@ -223,11 +227,11 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
buttonImage.sprite = normalButttonSprite;
|
buttonImage.sprite = normalButttonSprite;
|
||||||
TextMeshProUGUI buttonText = answerButtons[i].GetComponentInChildren<TextMeshProUGUI>();
|
TextMeshProUGUI buttonText = answerButtons[i].GetComponentInChildren<TextMeshProUGUI>();
|
||||||
buttonText.text = currentQuestion.answers[i];
|
buttonText.text = currentQuestion.answers[i];
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void DelayAfterAnswerTrue()
|
private async void DelayAfterAnswerTrue()
|
||||||
{
|
{
|
||||||
SaveData saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
|
SaveData saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
|
||||||
|
|
@ -271,7 +275,7 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
|
|
||||||
GameMenu.Open();
|
GameMenu.Open();
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerator DelayAfterAnswerFalse()
|
IEnumerator DelayAfterAnswerFalse()
|
||||||
{
|
{
|
||||||
yield return new WaitForSeconds(1f);
|
yield return new WaitForSeconds(1f);
|
||||||
|
|
@ -293,5 +297,13 @@ public class QuizPopUp : Menu<QuizPopUp>
|
||||||
{
|
{
|
||||||
audioController.Instance.StopDubbing();
|
audioController.Instance.StopDubbing();
|
||||||
audioController.Instance.PlayDubbing(currentQuestion.dubbingName);
|
audioController.Instance.PlayDubbing(currentQuestion.dubbingName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void OnBackPressed()
|
||||||
|
{
|
||||||
|
base.OnBackPressed();
|
||||||
|
audioController.Instance.StopDubbing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue