using UnityEngine;
using YG;

namespace Shooter.ScriptableObjects
{
    /// <summary>
    /// Сохранение прогресса игрока (ScriptableObject). Хранит номер чекпойнта,
    /// последний открытый уровень и количество кристаллов. Пишет данные и локально
    /// (PlayerPrefs), и в облако Яндекс.Игр (PluginYG), и отправляет счёт в лидерборд
    /// «gemslb».
    /// </summary>
    [CreateAssetMenu(fileName = "SaveData", menuName = "CustomObjects/SaveData", order = 1)]
    public class SaveData : ScriptableObject
    {
        [Tooltip("Номер достигнутого чекпойнта")]
        public int m_CheckpointNumber = 0;
        [Tooltip("Последний открытый уровень")]
        public int m_LastUnlockedLevel = 0;
        [Tooltip("Накоплено кристаллов")]
        public int m_GemCount = 0;

        public void Save()
        {
            // Локальное сохранение.
            PlayerPrefs.SetInt("m_CheckpointNumber", m_CheckpointNumber);
            PlayerPrefs.SetInt("m_GemCount", m_GemCount);
            PlayerPrefs.Save();

            // Облачное сохранение кристаллов через PluginYG.
            YandexGame.savesData.m_GemCount = m_GemCount;
            YandexGame.SaveProgress();

            // Запись результата в лидерборд «gemslb».
            YandexGame.NewLeaderboardScores("gemslb", m_GemCount);
        }

        public void Load()
        {
            m_CheckpointNumber = PlayerPrefs.GetInt("m_CheckpointNumber", 0);
            m_GemCount = PlayerPrefs.GetInt("m_GemCount", 0);
        }
    }
}
