using System.Collections.Generic; using System.Threading.Tasks; using TMPro; using UnityEngine; using UnityEngine.UI; using Random = UnityEngine.Random; public class PreTestMenu : Menu { [Header("Questions")] [SerializeField] TextMeshProUGUI questionText; [SerializeField] List questions = new List(); [SerializeField] GameObject[] answerButtons; [Header("UI")] [SerializeField] TextMeshProUGUI timerText; [Header("Answers")] [SerializeField] private Sprite normalButttonSprite; [SerializeField] private Sprite trueAnswerSprite; [SerializeField] private Sprite falseAnswerSprite; [Header("Settings")] [SerializeField] float timeToComplete = 30f; [SerializeField] float timeToShowAnswer = 10f; float timer; bool isAnswering = true; bool hasAnsweredEarly = false; int correctAnswerIndex; QuestionSO currentQuestion; bool isComplete = false; SaveData saveData; int correctAnswers = 0; int totalQuestions = 9; private async void OnEnable() { await LoadAndRefresh(); LoadRandomQuestion(); } private async Task LoadAndRefresh() { saveData = await Cloudsave.LoadData("DataPlayer"); saveData.isPreTestComplete = true; } void Update() { if (isComplete) return; timer -= Time.deltaTime; int minutes = Mathf.FloorToInt(timer / 60); int seconds = Mathf.FloorToInt(timer % 60); timerText.text = string.Format("{0:00}:{1:00}", minutes, seconds); if (isAnswering && timer <= 0f) { ShowCorrectAnswer(); } else if (!isAnswering && timer <= 0f) { LoadNextQuestion(); } } async void LoadRandomQuestion() { if (questions.Count == 0) { await EndGame(); return; } Image buttonImage; int index = Random.Range(0, questions.Count); currentQuestion = questions[index]; questions.RemoveAt(index); questionText.text = currentQuestion.question; for (int i = 0; i < answerButtons.Length; i++) { TextMeshProUGUI buttonText = answerButtons[i].GetComponentInChildren(); buttonImage = answerButtons[i].GetComponent(); buttonImage.sprite = normalButttonSprite; buttonText.text = currentQuestion.GetAnswer(i); answerButtons[i].GetComponent().color = Color.white; answerButtons[i].GetComponent