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