using AxibugProtobuf;
using System.Collections.Generic;

namespace AxibugEmuOnline.Client
{
    /// <summary>
    /// 游戏存档管理器
    /// </summary>
    public class SaveSlotManager
    {
        const int MAX_SLOT_COUNT = 4;

        SavCloudApi m_cloudApi = new SavCloudApi();
        Dictionary<int, SaveFile[]> m_saveFileDict = new Dictionary<int, SaveFile[]>();

        public void Save(int romID, RomPlatformType platform, int slotIndex, byte[] savData, byte[] screenShotData)
        {
            var fileIns = GetSaveFile(romID, platform, slotIndex);
            fileIns.Save(savData, screenShotData);
        }

        SaveFile GetSaveFile(int romID, RomPlatformType platform, int slotIndex)
        {
            if (!m_saveFileDict.TryGetValue(romID, out SaveFile[] files))
            {
                if (files == null) files = new SaveFile[MAX_SLOT_COUNT];
                for (int i = 0; i < files.Length; i++)
                {
                    files[i] = new SaveFile(romID, platform, i);
                }
                m_saveFileDict[romID] = files;
            }

            return files[slotIndex];
        }
    }
}