137 lines
4.0 KiB
C#
137 lines
4.0 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Networking;
|
|
using TMPro;
|
|
using System.Collections.Generic;
|
|
using UnityEngine.SceneManagement; // Tambah ini buat baca nama Scene
|
|
|
|
public class QuizOnline : MonoBehaviour
|
|
{
|
|
[Header("Link Google Sheet (Isi Keduanya)")]
|
|
public string linkCSV_Unsur = "PASTE_LINK_SHEET_1_DISINI";
|
|
public string linkCSV_Senyawa = "PASTE_LINK_SHEET_2_DISINI";
|
|
|
|
// Variabel buat nampung link mana yang bakal dipake
|
|
private string urlFinal;
|
|
|
|
[Header("Referensi UI")]
|
|
public GameObject panelKuis;
|
|
public GameObject panelLoading;
|
|
public GameObject panelError;
|
|
public TextMeshProUGUI textError;
|
|
|
|
private Quiz quizManager;
|
|
private QuizCollection databaseOnline;
|
|
|
|
void Start()
|
|
{
|
|
quizManager = FindObjectOfType<Quiz>();
|
|
|
|
// --- LOGIKA DETEKSI SCENE ---
|
|
string namaScene = SceneManager.GetActiveScene().name;
|
|
|
|
// Cek nama scenenya mengandung kata apa?
|
|
if (namaScene.Contains("Unsur"))
|
|
{
|
|
urlFinal = linkCSV_Unsur;
|
|
Debug.Log("Mode Kuis: UNSUR (Sheet 1)");
|
|
}
|
|
else if (namaScene.Contains("Senyawa"))
|
|
{
|
|
urlFinal = linkCSV_Senyawa;
|
|
Debug.Log("Mode Kuis: SENYAWA (Sheet 2)");
|
|
}
|
|
else
|
|
{
|
|
// Default kalau nama scene gak jelas, pake unsur aja
|
|
urlFinal = linkCSV_Unsur;
|
|
}
|
|
|
|
AmbilData();
|
|
}
|
|
|
|
public void AmbilData()
|
|
{
|
|
StartCoroutine(ProsesDownload());
|
|
}
|
|
|
|
// ... (Sisanya SAMA PERSIS kayak kode lama kamu di bawah ini) ...
|
|
|
|
public void ModeOffline()
|
|
{
|
|
if(panelLoading) panelLoading.SetActive(false);
|
|
if(panelError) panelError.SetActive(false);
|
|
if(panelKuis) panelKuis.SetActive(true);
|
|
}
|
|
|
|
System.Collections.IEnumerator ProsesDownload()
|
|
{
|
|
if(panelKuis) panelKuis.SetActive(false);
|
|
if(panelError) panelError.SetActive(false);
|
|
if(panelLoading) panelLoading.SetActive(true);
|
|
|
|
if (Application.internetReachability == NetworkReachability.NotReachable)
|
|
{
|
|
MunculkanError("Yah, tidak ada koneksi internet!");
|
|
yield break;
|
|
}
|
|
|
|
// PENTING: Pake urlFinal yang sudah dipilih tadi
|
|
UnityWebRequest www = UnityWebRequest.Get(urlFinal);
|
|
|
|
yield return www.SendWebRequest();
|
|
|
|
if(panelLoading) panelLoading.SetActive(false);
|
|
|
|
if (www.result != UnityWebRequest.Result.Success)
|
|
{
|
|
MunculkanError("Gagal mengambil soal.\nCek koneksi kamu ya!");
|
|
}
|
|
else
|
|
{
|
|
ProsesCSV(www.downloadHandler.text);
|
|
if(panelKuis) panelKuis.SetActive(true);
|
|
}
|
|
}
|
|
|
|
void MunculkanError(string pesan)
|
|
{
|
|
if(panelLoading) panelLoading.SetActive(false);
|
|
if(panelError) panelError.SetActive(true);
|
|
if(textError) textError.text = pesan;
|
|
}
|
|
|
|
void ProsesCSV(string text)
|
|
{
|
|
databaseOnline = new QuizCollection();
|
|
databaseOnline.daftarSoal = new List<QuestionData>();
|
|
|
|
string[] baris = text.Split('\n');
|
|
|
|
for (int i = 1; i < baris.Length; i++)
|
|
{
|
|
string barisData = baris[i].Trim();
|
|
if (string.IsNullOrEmpty(barisData)) continue;
|
|
|
|
string[] kolom = barisData.Split(',');
|
|
|
|
if (kolom.Length < 6) continue;
|
|
|
|
QuestionData q = new QuestionData();
|
|
q.pertanyaan = kolom[0].Replace("\"", "");
|
|
q.pilihanJawaban = new string[4];
|
|
q.pilihanJawaban[0] = kolom[1].Replace("\"", "");
|
|
q.pilihanJawaban[1] = kolom[2].Replace("\"", "");
|
|
q.pilihanJawaban[2] = kolom[3].Replace("\"", "");
|
|
q.pilihanJawaban[3] = kolom[4].Replace("\"", "");
|
|
|
|
int.TryParse(kolom[5], out q.kunciJawaban);
|
|
|
|
databaseOnline.daftarSoal.Add(q);
|
|
}
|
|
|
|
if(quizManager != null && databaseOnline.daftarSoal.Count > 0)
|
|
{
|
|
quizManager.SetSoalOnline(databaseOnline);
|
|
}
|
|
}
|
|
} |