ZoeAppClass/Assets/Jogos/Jeopardy/Scripts/JPB_QuestionManager.cs

158 lines
4.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class JPB_QuestionManager : MonoBehaviour
{
public static JPB_QuestionManager instance;
[SerializeField]
public JPB_QuestionCategoryBehaviour[] category;
public int currentCat = 0;
public int currentQuestion = 0;
private int questionCount = 0;
public Transform answerParent;
public GameObject answerPrefab;
public GameObject questionPresentation;
private Image imageUi;
private Text textUi;
private GameObject correctPanel;
private JPB_QuestionButtonBehaviour pickedQuestionButton;
private string[] alphabet = new string[] { "A", "B", "C", "D" };
private void Awake()
{
instance = this;
correctPanel = GameObject.Find("CorrectPanel");
imageUi = GetComponentsInChildren<Image>()[1];
textUi = GetComponentsInChildren<Text>()[0];
for(int i = 0; i < category.Length;i++)
{
questionCount += category[i].questions.Count;
}
}
public void ReceiveQuestion(int q, int c, JPB_QuestionButtonBehaviour qBB)
{
pickedQuestionButton = qBB;
currentCat = c;
currentQuestion = q;
SetupQuestion();
}
public void SetupQuestion()
{
if (category[currentCat].questions.Count != 0)
{
textUi.text = category[currentCat].questions[currentQuestion].questionText;
textUi.text[currentQuestion].ToString().ToUpper();
if (category[currentCat].questions[currentQuestion].questionImage != null)
{
imageUi.sprite = category[currentCat].questions[currentQuestion].questionImage;
imageUi.color = Color.white;
}
else
{
imageUi.color = Color.clear;
}
PresentQuestion();
SetupAnswers();
}
}
public void SetupAnswers()
{
for (int i = 0; i < category[currentCat].questions[currentQuestion].answers.Length; i++)
{
GameObject temp = Instantiate(answerPrefab, answerParent, false);
JPB_AnswerBehaviour tA = category[currentCat].questions[currentQuestion].answers[i];
Text[] groupText = temp.GetComponentsInChildren<Text>();
groupText[1].text = tA.answerText;
groupText[0].text = alphabet[i];
temp.GetComponent<JPB_AnswerButtonBehaviour>().thisBtnId = i;
temp.GetComponent<JPB_AnswerButtonBehaviour>().qBBParent = pickedQuestionButton;
}
}
public void CheckAnswer(int id,JPB_QuestionButtonBehaviour qBtn)
{
if (category[currentCat].questions[currentQuestion].answers[id].isCorrect)
{
CorrectAnswer();
qBtn.ReturnResult(true);
}
else
{
WrongAnswer();
qBtn.ReturnResult(false);
}
}
public void CorrectAnswer()
{
//TimerBehaviour.instance.StopTimer();
SoundPlayer.instance.PlaySFX(1);
//int tempScore = (currentQuestion + 1) * 100 ;
//JPB_TeamController.instance.AddScore(tempScore);
//SetupCorrectScreen(tempScore);
NextQuestion();
CleanUpAnswers();
}
public void WrongAnswer()
{
SoundPlayer.instance.PlaySFX(0);
//JPB_TeamController.instance.PassChance();
//TimerBehaviour.instance.StopTimer();
//TimerBehaviour.instance.ResetTimer();
//TimerBehaviour.instance.StartTimer();
NextQuestion();
CleanUpAnswers();
}
public void NextQuestion()
{
questionCount--;
if (questionCount == 0)
{
JPB_StepsManager.instance.DeclareWinner();
}
else
{
JPB_StepsManager.instance.PickAnotherQuesiton();
}
}
public void PresentQuestion()
{
questionPresentation.GetComponentsInChildren<Text>()[0].text = category[currentCat].questions[currentQuestion].questionText;
questionPresentation.GetComponentsInChildren<Text>()[1].text = category[currentCat].categoryName;
}
public void SetupCorrectScreen(int n)
{
string point;
if (n == 1)
{
point = " Point to ";
}
else
{
point = " Points to ";
}
correctPanel.GetComponentsInChildren<Text>()[1].text = n + point + JPB_TeamController.instance.teams[JPB_TeamController.instance.currentlyPlayingTeam].teamName + " Team !";
}
public void CleanUpAnswers()
{
foreach(Transform n in answerParent.gameObject.GetComponentsInChildren<Transform>())
{
if(n.name != "AnswersOrganizer")
{
Destroy(n.gameObject);
}
}
}
}