using System.IO;
using UnityEngine;

[System.Serializable]
public class SaveData
{
    public int version = 1;
    public int coins;
    public int level;
    public float posX;
    public float posY;
    public float posZ;
}

public class SaveSystem : MonoBehaviour
{
    private string path;

    void Awake()
    {
        path = Path.Combine(
            Application.persistentDataPath,
            "save.json"
        );
    }

    public void Save(
        int coins,
        int level,
        Vector3 position)
    {
        SaveData data =
            new SaveData();

        data.coins = coins;
        data.level = level;
        data.posX = position.x;
        data.posY = position.y;
        data.posZ = position.z;

        string json =
            JsonUtility.ToJson(
                data,
                true
            );

        File.WriteAllText(
            path,
            json
        );
    }

    public bool Load(
        out SaveData data)
    {
        data = null;

        if (!File.Exists(path))
        {
            return false;
        }

        try
        {
            string json =
                File.ReadAllText(path);

            data =
                JsonUtility
                .FromJson<SaveData>(
                    json
                );

            return data != null;
        }
        catch (System.Exception error)
        {
            Debug.LogError(
                "Could not load save: " +
                error.Message
            );

            return false;
        }
    }
}