254 lines
6.8 KiB
C#
254 lines
6.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public class Quest : MonoBehaviour
|
|
{
|
|
public Text soalText;
|
|
public Text[] jawabanTexts;
|
|
public int[] randomJawabans;
|
|
|
|
public ControlQuest[] controlQuest;
|
|
public static int nomorQuest;
|
|
int nomorSoal;
|
|
[Tooltip("GameRound mengikuti nilai array 0=1 1=2")]
|
|
public int GameRound;
|
|
|
|
public GameObject panelHasil;
|
|
|
|
public int[] randomSoals;
|
|
|
|
[Header("Point")]
|
|
public Text pointText;
|
|
public int point;
|
|
public static int totalPoint;
|
|
public Text textPointGame;
|
|
|
|
[Header("Timer")]
|
|
public int increaseTime;
|
|
public int decreaseTime;
|
|
public Slider timerSlider;
|
|
|
|
[Header("Power Up")]
|
|
int nomorJawabanBenar;
|
|
public Button[] powerUps;
|
|
|
|
[Header("Soal Image")]
|
|
public Image imageSoal;
|
|
public Button[] buttonJawabans;
|
|
|
|
void Start()
|
|
{
|
|
textPointGame.text = totalPoint.ToString();
|
|
|
|
totalPoint = 0;
|
|
|
|
Debug.Log(TimerGame.isStop + " isStop");
|
|
|
|
RandomNomerSoal();
|
|
|
|
GenerateQuest();
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
public void ButtonPowerUpTrueAnswer()
|
|
{
|
|
powerUps[1].interactable = false;
|
|
|
|
for (int i = 0; i < jawabanTexts.Length; i++)
|
|
{
|
|
if (jawabanTexts[i].text == controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.jawabans[controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.jawabanBenar])
|
|
{
|
|
Debug.Log(i + "nomor benar");
|
|
|
|
nomorJawabanBenar = i;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < jawabanTexts.Length; i++)
|
|
{
|
|
if (i != nomorJawabanBenar)
|
|
{
|
|
jawabanTexts[i].transform.parent.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ButtonPowerUpFifty()
|
|
{
|
|
powerUps[0].interactable = false;
|
|
|
|
for (int i = 0; i < jawabanTexts.Length; i++)
|
|
{
|
|
if (jawabanTexts[i].text == controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.jawabans[controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.jawabanBenar])
|
|
{
|
|
Debug.Log(i + "nomor benar");
|
|
|
|
nomorJawabanBenar = i;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
Debug.Log("break");
|
|
|
|
if (nomorJawabanBenar - 1 <= 0)
|
|
{
|
|
jawabanTexts[jawabanTexts.Length - 1].transform.parent.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
jawabanTexts[nomorJawabanBenar - 1].transform.parent.gameObject.SetActive(false);
|
|
}
|
|
if (nomorJawabanBenar + 1 >= jawabanTexts.Length)
|
|
{
|
|
jawabanTexts[0].transform.parent.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
jawabanTexts[nomorJawabanBenar + 1].transform.parent.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
void RandomNomerSoal()
|
|
{
|
|
for (int i = 0; i < randomSoals.Length; i++)
|
|
{
|
|
int a = randomSoals[i];
|
|
int b = Random.Range(0, randomSoals.Length);
|
|
randomSoals[i] = randomSoals[b];
|
|
randomSoals[b] = a;
|
|
}
|
|
}
|
|
|
|
void RandomNomerJawaban()
|
|
{
|
|
for (int i = 0; i < randomJawabans.Length; i++)
|
|
{
|
|
int a = randomJawabans[i];
|
|
int b = Random.Range(0, randomJawabans.Length);
|
|
randomJawabans[i] = randomJawabans[b];
|
|
randomJawabans[b] = a;
|
|
}
|
|
}
|
|
|
|
void GenerateQuest()
|
|
{
|
|
RandomNomerJawaban();
|
|
RandomNomerSoal();
|
|
|
|
soalText.text = controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.soal;
|
|
|
|
imageSoal.sprite = controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.spriteSoal;
|
|
|
|
for (int i = 0; i < buttonJawabans.Length; i++)
|
|
{
|
|
jawabanTexts[i].transform.parent.gameObject.SetActive(true);
|
|
|
|
jawabanTexts[i].text = controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.jawabans[randomJawabans[i]];
|
|
|
|
buttonJawabans[i].image.sprite = controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.spriteJawabans[randomJawabans[i]];
|
|
}
|
|
}
|
|
|
|
public void ButtonJawabanSoal()
|
|
{
|
|
Text currentJawaban = EventSystem.current.currentSelectedGameObject.transform.GetChild(0).GetComponent<Text>();
|
|
|
|
if (currentJawaban.text == controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.jawabans[controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.jawabanBenar])
|
|
{
|
|
Debug.Log("benar");
|
|
|
|
/*
|
|
if (nomorSoal == GameRound)
|
|
{
|
|
panelHasil.transform.GetChild(1).GetComponent<Text>().text = "Selamat. semua soal telah Terjawab!";
|
|
panelHasil.transform.GetChild(2).gameObject.SetActive(false);
|
|
}
|
|
*/
|
|
|
|
totalPoint += point;
|
|
|
|
timerSlider.value += increaseTime;
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("salah");
|
|
|
|
//panelHasil.transform.GetChild(1).GetComponent<Text>().text = "Ayo Coba Lagi!";
|
|
//panelHasil.transform.GetChild(2).gameObject.SetActive(false);
|
|
|
|
if (totalPoint >= 0)
|
|
{
|
|
|
|
}
|
|
|
|
totalPoint += point / 2;
|
|
|
|
timerSlider.value -= decreaseTime;
|
|
}
|
|
|
|
Sprite spriteJawaban = EventSystem.current.currentSelectedGameObject.GetComponent<Button>().image.sprite;
|
|
|
|
if (spriteJawaban.name == controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.spriteJawabans[controlQuest[nomorQuest].soals[randomSoals[nomorSoal]].elementSoal.jawabanBenar].name)
|
|
{
|
|
Debug.Log("benar");
|
|
|
|
totalPoint += point / 2;
|
|
|
|
timerSlider.value += decreaseTime;
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("salah");
|
|
|
|
totalPoint += point / 2;
|
|
|
|
timerSlider.value -= decreaseTime;
|
|
}
|
|
|
|
textPointGame.text = totalPoint.ToString();
|
|
|
|
nomorSoal++;
|
|
|
|
if (nomorSoal == GameRound) //counting game round
|
|
{
|
|
TimerGame.isStop = true;
|
|
|
|
panelHasil.transform.GetChild(1).GetComponent<Text>().text = "Selamat Telah Mengerjakan Semua Soal";
|
|
panelHasil.transform.GetChild(2).gameObject.SetActive(false);
|
|
panelHasil.SetActive(true);
|
|
|
|
pointText.text = "Point Akhir Kamu: " + totalPoint.ToString();
|
|
}
|
|
|
|
else
|
|
{
|
|
GenerateQuest();
|
|
}
|
|
|
|
if (TimerGame.isTimeStop == true)
|
|
{
|
|
TimerGame.isTimeStop = false;
|
|
}
|
|
}
|
|
|
|
public void ButtonNextSoal()
|
|
{
|
|
panelHasil.SetActive(false);
|
|
|
|
nomorSoal++;
|
|
|
|
GenerateQuest();
|
|
}
|
|
}
|