MIF_E31230902/Assets/Asset/_Main/Script/Quiz/QuizScreen.cs

125 lines
3.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
namespace PahlawanEnergi.Quiz
{
public class QuizScreen : MonoBehaviour
{
[Header("Reference global")]
[SerializeField] private QuizResultScreen resultScreen;
[Header("Reference local")]
[SerializeField] private CanvasGroup canvasGroup;
[SerializeField] private TextMeshProUGUI questionText;
[SerializeField] private GameObject questionContainer;
[SerializeField] private GameObject resultContainer;
[SerializeField] private ButtonChoice choicePrefab;
[SerializeField] private Transform choicesParent;
[SerializeField] private List<ButtonChoice> choices;
[Header("Data")]
[SerializeField] private QuizItem quizItem;
[Header("Audio")]
[SerializeField] private AudioSource audioSource;
[SerializeField] private AudioClip clipCorrect;
[SerializeField] private AudioClip clipIncorrect;
private void OnEnable()
{
ShowQuestion();
questionContainer.SetActive(true);
resultContainer.SetActive(false);
}
public void InitializeQuestion(int questionId)
{
quizItem = QuizManager.instance.GetQuestion(questionId);
}
public void ShowQuestion()
{
questionText.text = quizItem.question;
for (int i = 0; i < quizItem.answerChoices.Length; i++)
{
if(i < choices.Count)
{
choices[i].Setup(this, quizItem.answerChoices[i]);
}
else
{
ButtonChoice choice = Instantiate(choicePrefab, choicesParent);
choice.Setup(this, quizItem.answerChoices[i]);
choices.Add(choice);
}
}
}
/*public void AnswerTrue()
{
questionContainer.gameObject.SetActive(false);
resultScreen.ShowResult(quizItem.answer == true);
resultContainer.gameObject.SetActive(true);
QuizManager.instance.CompleteQuestion(quizItem.id);
if(quizItem.answer == true)
{
QuizManager.instance.AddScore(1);
}
}
public void AnswerFalse()
{
questionContainer.gameObject.SetActive(false);
resultScreen.ShowResult(quizItem.answer == false);
resultContainer.gameObject.SetActive(true);
QuizManager.instance.CompleteQuestion(quizItem.id);
if (quizItem.answer == false)
{
QuizManager.instance.AddScore(1);
}
}*/
public void CloseScreen()
{
gameObject.SetActive(false);
QuizManager.instance.CheckEndGame();
}
internal void Answer(bool isCorrectAnswer)
{
questionContainer.gameObject.SetActive(false);
resultScreen.ShowResult(isCorrectAnswer, isCorrectAnswer? quizItem.messageWhenCorrect : quizItem.messageWhenUncorrect);
resultContainer.gameObject.SetActive(true);
QuizManager.instance.CompleteQuestion(quizItem.id);
if (isCorrectAnswer)
{
QuizManager.instance.AddScore(1);
}
if (audioSource)
{
audioSource.PlayOneShot(isCorrectAnswer? clipCorrect: clipIncorrect);
}
}
}
}