191 lines
7.3 KiB
C#
191 lines
7.3 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
|
|
public class ProfilAktivitasUI : MonoBehaviour
|
|
{
|
|
[Header("UI Profil")]
|
|
public GameObject panelProfil;
|
|
public TMP_Text txtIsiProfil;
|
|
public Button btnLihatProfil;
|
|
public Button btnTutupProfil;
|
|
|
|
[Header("Data Level")]
|
|
[Tooltip("Isi persis sesuai nama level di Manager, contoh: Rumah. Khusus Ending wajib ketik: ENDING")]
|
|
public string namaLevel = "Rumah";
|
|
|
|
[Header("Opsional")]
|
|
public Manager_Game_RPG managerGame;
|
|
|
|
private void Start()
|
|
{
|
|
if (managerGame == null)
|
|
managerGame = FindObjectOfType<Manager_Game_RPG>();
|
|
|
|
// Mengatur kondisi awal panel saat game dimulai
|
|
if (namaLevel.ToUpper() == "ENDING")
|
|
{
|
|
if (panelProfil != null) panelProfil.SetActive(true);
|
|
TampilkanProfil();
|
|
}
|
|
else
|
|
{
|
|
if (panelProfil != null) panelProfil.SetActive(false);
|
|
}
|
|
|
|
if (btnLihatProfil != null)
|
|
{
|
|
btnLihatProfil.onClick.RemoveAllListeners();
|
|
btnLihatProfil.onClick.AddListener(TampilkanProfil);
|
|
}
|
|
|
|
if (btnTutupProfil != null)
|
|
{
|
|
btnTutupProfil.onClick.RemoveAllListeners();
|
|
btnTutupProfil.onClick.AddListener(TutupProfil);
|
|
}
|
|
}
|
|
|
|
public void TampilkanProfil()
|
|
{
|
|
if (managerGame == null)
|
|
managerGame = FindObjectOfType<Manager_Game_RPG>();
|
|
|
|
string isiProfil;
|
|
|
|
if (namaLevel.ToUpper() == "ENDING")
|
|
{
|
|
isiProfil = HitungAkumulasiRaporAkhir();
|
|
}
|
|
else if (managerGame != null)
|
|
{
|
|
isiProfil = managerGame.BuatTeksProfilSaatIni();
|
|
}
|
|
else
|
|
{
|
|
isiProfil = AmbilProfilDariPlayerPrefs();
|
|
}
|
|
|
|
if (txtIsiProfil != null)
|
|
txtIsiProfil.text = isiProfil;
|
|
|
|
// Keamanan Kontrol: Karakter hanya dikunci jika panel background putihnya berhasil muncul
|
|
if (panelProfil != null)
|
|
{
|
|
panelProfil.SetActive(true);
|
|
|
|
if (managerGame != null && namaLevel.ToUpper() != "ENDING")
|
|
{
|
|
managerGame.SetKontrolDariUI(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void TutupProfil()
|
|
{
|
|
if (panelProfil != null)
|
|
panelProfil.SetActive(false);
|
|
|
|
if (namaLevel.ToUpper() == "ENDING")
|
|
{
|
|
PlayerPrefs.DeleteAll();
|
|
SceneManager.LoadScene(0);
|
|
}
|
|
else
|
|
{
|
|
if (managerGame != null)
|
|
managerGame.SetKontrolDariUI(false);
|
|
}
|
|
}
|
|
|
|
private string HitungAkumulasiRaporAkhir()
|
|
{
|
|
int totalSopan = 0, totalTanggung = 0, totalDisiplin = 0, totalPeduli = 0;
|
|
int totalPelanggaran = 0;
|
|
|
|
string[] listLevel = { "Rumah", "Halaman Rumah", "Halaman Sekolah", "Ruang Kelas", "Taman Bermain", "Halaman Sekolah 2", "Rumah Kembali" };
|
|
|
|
foreach (string lvl in listLevel)
|
|
{
|
|
string prefix = "SALIM_" + lvl + "_";
|
|
totalSopan += PlayerPrefs.GetInt(prefix + "SopanSantun", 0);
|
|
totalTanggung += PlayerPrefs.GetInt(prefix + "TanggungJawab", 0);
|
|
totalDisiplin += PlayerPrefs.GetInt(prefix + "Disiplin", 0);
|
|
totalPeduli += PlayerPrefs.GetInt(prefix + "Peduli", 0);
|
|
totalPelanggaran += PlayerPrefs.GetInt(prefix + "Peringatan", 0);
|
|
}
|
|
|
|
int totalPoinSemua = totalSopan + totalTanggung + totalDisiplin + totalPeduli;
|
|
string predikatFinal = "KURANG";
|
|
string gradeFinal = "C";
|
|
|
|
if (totalPoinSemua >= 350 && totalPelanggaran <= 3) { predikatFinal = "SANGAT BAIK"; gradeFinal = "A"; }
|
|
else if (totalPoinSemua >= 200 && totalPelanggaran <= 6) { predikatFinal = "BAIK"; gradeFinal = "B"; }
|
|
|
|
return
|
|
"<b>[ RAPOR FINAL PETUALANGAN SALIM ]</b>\n" +
|
|
"Status Game : TAMAT (Selesai)\n" +
|
|
"Nilai Akhir : " + predikatFinal + " (" + gradeFinal + ")\n" +
|
|
"Total Skor : " + totalPoinSemua + " Poin\n" +
|
|
"--------------------------------------------------\n\n" +
|
|
|
|
"<b>[ TOTAL AKUMULASI POIN SIKAP ]</b>\n" +
|
|
"(-) Total Sopan Santun : " + totalSopan + " Poin\n" +
|
|
"(-) Total Tanggung Jawab: " + totalTanggung + " Poin\n" +
|
|
"(-) Total Disiplin : " + totalDisiplin + " Poin\n" +
|
|
"(-) Total Peduli : " + totalPeduli + " Poin\n" +
|
|
"--------------------------------------------------\n\n" +
|
|
|
|
"<b>[ TOTAL PELANGGARAN TERAKUMULASI ]</b>\n" +
|
|
"(!) Total Pelanggaran Aturan Map : " + totalPelanggaran + " Kali\n" +
|
|
"--------------------------------------------------\n\n" +
|
|
|
|
"<b>[ PESAN KELULUSAN ]</b>\n" +
|
|
"Selamat! Salim telah menyelesaikan seluruh petualangan dengan baik. " +
|
|
"Semoga sikap terpuji ini selalu diterapkan di kehidupan nyata ya!";
|
|
}
|
|
|
|
private string AmbilProfilDariPlayerPrefs()
|
|
{
|
|
string prefix = "SALIM_" + namaLevel + "_";
|
|
int sopan = PlayerPrefs.GetInt(prefix + "SopanSantun", 0);
|
|
int tanggung = PlayerPrefs.GetInt(prefix + "TanggungJawab", 0);
|
|
int disiplin = PlayerPrefs.GetInt(prefix + "Disiplin", 0);
|
|
int peduli = PlayerPrefs.GetInt(prefix + "Peduli", 0);
|
|
int total = PlayerPrefs.GetInt(prefix + "TotalPoin", 0);
|
|
int peringatan = PlayerPrefs.GetInt(prefix + "Peringatan", 0);
|
|
|
|
string baik = PlayerPrefs.GetString(prefix + "AktivitasBaik", "- Belum ada aktivitas selesai.");
|
|
string terlewat = PlayerPrefs.GetString(prefix + "AktivitasTerlewat", "- Tidak ada aktivitas terlewat.");
|
|
string obstacle = PlayerPrefs.GetString(prefix + "Obstacle", "- Tidak terkena obstacle.");
|
|
string predikat = PlayerPrefs.GetString(prefix + "Predikat", "BELUM BERMAIN");
|
|
string catatan = PlayerPrefs.GetString(prefix + "Catatan", "Belum ada catatan.");
|
|
|
|
string nilaiHuruf = "D";
|
|
if (predikat == "SANGAT BAIK") nilaiHuruf = "A";
|
|
else if (predikat == "BAIK") nilaiHuruf = "B";
|
|
else if (predikat == "CUKUP") nilaiHuruf = "C";
|
|
|
|
return
|
|
"<b>[ ARSIP PERKEMBANGAN SIKAP SALIM ]</b>\n" +
|
|
"Catatan Rekam : Level " + namaLevel + "\n" +
|
|
"Nilai Karakter : " + predikat + " (" + nilaiHuruf + ")\n" +
|
|
"--------------------------------------------------\n\n" +
|
|
|
|
"<b>[ DATA CAPAIAN ASPEK POIN ]</b>\n" +
|
|
"(-) Sopan Santun : " + sopan + " Poin\n" +
|
|
"(-) Tanggung Jawab: " + tanggung + " Poin\n" +
|
|
"(-) Disiplin : " + disiplin + " Poin\n" +
|
|
"(-) Peduli : " + peduli + " Poin\n" +
|
|
"--------------------------------------------------\n\n" +
|
|
|
|
"<b>[ JURNAL HISTORY JALANNYA MISI ]</b>\n" +
|
|
"(*) Aktivitas Sukses:\n" + baik + "\n\n" +
|
|
"(-) Aktivitas Terlewat:\n" + terlewat + "\n\n" +
|
|
"(!) Pelanggaran Gangguan:\n" + obstacle + "\n" +
|
|
"--------------------------------------------------\n\n" +
|
|
|
|
"<b>[ PESAN EVALUASI GURU ]</b>\n" + catatan;
|
|
}
|
|
} |