MIF_E31230979/Assets/Scripts/MenuBelajar/Record_Display.cs

71 lines
2.4 KiB
C#

using UnityEngine;
using System.Collections.Generic;
public class RecordDisplay : MonoBehaviour
{
public Transform contentParent;
public GameObject recordPrefab;
[Header("Daftar Gambar Menu")]
public List<Sprite> listGambarMenu;
// Tambahkan OnEnable supaya otomatis update tiap panel dibuka
void OnEnable()
{
RefreshDisplay();
}
public void RefreshDisplay()
{
// 1. Cek dulu barangnya ada nggak, biar gak error merah lagi
if (SaveSystem.instance == null)
{
Debug.LogWarning("SaveSystem belum ada! Pastikan mulai dari HomePage.");
return;
}
if (contentParent == null || recordPrefab == null)
{
Debug.LogError("Slot Content atau Prefab di Inspector belum diisi!");
return;
}
// 2. Bersihkan Content (Penting: Pakai cara yang lebih paksa)
foreach (Transform child in contentParent)
{
// Kita pakai DestroyImmediate kalau di Editor atau semacamnya,
// tapi untuk amannya kita pakai trik pindah folder/hilangkan visibility
child.gameObject.SetActive(false); // Sembunyikan dulu
Destroy(child.gameObject); // Baru hancurkan
}
// 3. Buat Kartu Baru berdasarkan data SaveSystem
for (int i = 0; i < SaveSystem.instance.data.allMenuStats.Length; i++)
{
// Ambil data dari gudang (SaveSystem)
var stats = SaveSystem.instance.data.allMenuStats[i];
// Buat kartu baru di dalam Content
GameObject newGo = Instantiate(recordPrefab, contentParent);
// Set skalanya ke 1 (Kadang kalau Instantiate suka jadi gede/kecil sendiri)
newGo.transform.localScale = Vector3.one;
RecordItemUI itemUI = newGo.GetComponent<RecordItemUI>();
if (itemUI != null)
{
// Ambil gambar dari list. Kalau listnya kurang, kasih null biar gak error.
Sprite gambarYangDipakai = (i < listGambarMenu.Count) ? listGambarMenu[i] : null;
// Kirim data ke kartu
itemUI.SetData(gambarYangDipakai,
stats.jumlahKunjungan.ToString(),
stats.highscore.ToString(),
stats.totalWaktu);
}
}
Debug.Log("Board Informasi Berhasil Diperbarui!");
}
}