using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(fileName = "LevelData", menuName = "ScriptableObjects/Data/LevelData")]
public class LevelData : ScriptableObject, ISaveLoad
{
    public int levelNumber;
    public int score;

    // `[System.Serializable]` is needed for any class saved to a binary file
    [System.Serializable]
    class LevelSaveData
    {
        public int levelNumber;
        public int score;
    }

    public void SetLevelNumber(string newLevelNumber)
    {
        levelNumber = int.Parse(newLevelNumber);
    }

    public void SetScore(string newScore)
    {
        score = int.Parse(newScore);
    }

    public string GetDataName()
    {
        return "LevelData";
    }

    public string Load(string saveName)
    {
        LevelSaveData data = SaveSystemUtilities.Load<LevelSaveData>(GetDataName(), saveName);
        if (data != null)
        {
            levelNumber = data.levelNumber;
            score = data.score;
            return "";
        }
        else
        {
            return $"Data for {GetDataName()} in save {saveName} was not found";
        }
    }

    public string Reset()
    {
        levelNumber = 1;
        score = 0;
        return "";
    }

    public string Save(string saveName)
    {
        LevelSaveData data = new LevelSaveData();
        data.levelNumber = levelNumber;
        data.score = score;

        SaveSystemUtilities.Save<LevelSaveData>(data, GetDataName(), saveName);
        return "";
    }
}
