MIF_E31221209/Assets/Script/RiwayatSkor.cs

76 lines
3.0 KiB
C#

using Firebase.Database;
using UnityEngine;
using UnityEngine.UI;
public class RiwayatSkor : MonoBehaviour //library unity, agar file bisa ditempelkan di unity
{
public Text QuizScoreText; //Tempat untuk menampilkan skor quiz
public Text PretestScoreText; //Tempat untuk menampilkan skor pretest
private string userID; //mengambil userid dari database
private DatabaseReference dbReference; //menghubungkan dengan database
private int latestQuizScore = -1; //menampilkan score quiz terakhir dari firebase
private int latestPretestScore = -1; //menampilkan score pretes terakhir dari firebase
private bool updateUI = false; //penanda jika data berhasil di ambil dari database
void Start()
{
userID = PlayerPrefs.GetString("UserID", "");
if (string.IsNullOrEmpty(userID))
{
Debug.LogError("UserID tidak ditemukan.");
return;
}
dbReference = FirebaseDatabase.DefaultInstance.RootReference;
LoadScores(); //mengambil data skor dari Firebase berdasarkan userID
}
void Update()
{
if (updateUI) //untuk mengupdate score
{
if (latestQuizScore >= 0) //jika tidak ada scorenya maka nilainya 0
//mengubah nilai integer menjadi string agar bisa ditampilkan di teks UI.
QuizScoreText.text = latestQuizScore.ToString();
if (latestPretestScore >= 0)
PretestScoreText.text = latestPretestScore.ToString();
updateUI = false; // mengatur agar update hanya dijalakan ketika selesai mengerjakan soal
}
}
void LoadScores() //mengambil data skor pengguna
{
//mengambil score dari userID pengguna
dbReference.Child("users").Child(userID).Child("scores").GetValueAsync().ContinueWith(task =>
{
if (task.IsFaulted || !task.IsCompleted) //untuk mengecek apakah berhasil atau gagal mengambil data
{
Debug.LogError("Gagal mengambil skor: " + task.Exception);
return;
}
DataSnapshot snapshot = task.Result; //Menyimpan hasil dari pengambilan data dari Firebase
if (snapshot.Exists) //Mengecek apakah data skor benar-benar tersedia di Firebase.
{
if (snapshot.Child("quizScore").Exists) //Mengecek apakah data quizScore ada.
latestQuizScore = int.Parse(snapshot.Child("quizScore").Value.ToString());
//Jika ada, ubah nilainya ke int lalu simpan ke kolom quiz yang ada di unity
if (snapshot.Child("pretestScore").Exists) //Mengecek apakah data pretestScore ada.
latestPretestScore = int.Parse(snapshot.Child("pretestScore").Value.ToString());
//Jika ada, ubah nilainya ke int lalu simpan ke kolom pretest yang ada di unity
updateUI = true; //menampilkan score ke panel di unity
}
else
{
Debug.Log("Data skor belum tersedia.");
}
});
}
}