76 lines
3.0 KiB
C#
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.");
|
|
}
|
|
});
|
|
}
|
|
}
|