MIF_E31230979/Assets/Scripts/HomePage/SaveSystem.cs

93 lines
2.9 KiB
C#

using UnityEngine;
using System.IO;
public class SaveSystem : MonoBehaviour
{
public static SaveSystem instance;
public SaveData data = new SaveData();
private string path;
void Awake()
{
if (instance == null) {
instance = this;
DontDestroyOnLoad(gameObject);
} else {
Destroy(gameObject);
}
path = Application.persistentDataPath + "/GemasSaveData.json";
LoadGame();
}
[ContextMenu("Save Game")]
public void SaveGame()
{
string json = JsonUtility.ToJson(data, true);
File.WriteAllText(path, json);
Debug.Log("Data Berhasil Disimpan");
}
public void LoadGame()
{
if (File.Exists(path))
{
string json = File.ReadAllText(path);
data = JsonUtility.FromJson<SaveData>(json);
Debug.Log("Data Berhasil Dimuat");
}
else
{
InitializeNewData();
SaveGame();
}
}
// --- FUNGSI REVISI: UNTUK SIMPAN AKHIR GAME (KUNJUNGAN, SKOR, WAKTU) ---
public void SimpanHasilGame(int indexMenu, int skorSesiIni, float durasiDetikSesiIni)
{
if (data == null || indexMenu >= data.allMenuStats.Length) return;
// 1. Tambah jumlah kunjungan
data.allMenuStats[indexMenu].jumlahKunjungan += 1;
// 2. Akumulasi Skor (Skor lama + skor baru)
data.allMenuStats[indexMenu].highscore += skorSesiIni;
// 3. Akumulasi Waktu (Konversi detik ke mm:ss)
string waktuLamaStr = data.allMenuStats[indexMenu].totalWaktu;
int totalDetikLama = 0;
if (!string.IsNullOrEmpty(waktuLamaStr) && waktuLamaStr.Contains(":"))
{
string[] parts = waktuLamaStr.Split(':');
totalDetikLama = (int.Parse(parts[0]) * 60) + int.Parse(parts[1]);
}
int totalDetikBaru = totalDetikLama + (int)durasiDetikSesiIni;
int mins = totalDetikBaru / 60;
int secs = totalDetikBaru % 60;
data.allMenuStats[indexMenu].totalWaktu = string.Format("{0:00}:{1:00}", mins, secs);
// Simpan perubahan
SaveGame();
Debug.Log("Record Berhasil Diupdate untuk: " + data.allMenuStats[indexMenu].namaMenu);
}
// Fungsi lama tetap dipertahankan agar tidak error
public void TambahSkor(int indexMenu, int skorBaru)
{
data.allMenuStats[indexMenu].highscore += skorBaru;
SaveGame();
}
void InitializeNewData()
{
data.allMenuStats[0] = new MenuStats { namaMenu = "Menu Belajar" };
data.allMenuStats[1] = new MenuStats { namaMenu = "Game Tangkap Sayur" };
data.allMenuStats[2] = new MenuStats { namaMenu = "Game Cocokkan Gambar" };
data.allMenuStats[3] = new MenuStats { namaMenu = "Game Susun Huruf" };
data.allMenuStats[4] = new MenuStats { namaMenu = "Game Quiz" };
}
}