﻿using System.Collections.Generic;
using JLGames.RocketDriver.Actions.Loaderx;

namespace JLGames.RocketDriver.Games.Service.Preload
{
    public class PreloadCache
    {
        private readonly Dictionary<string, BundleRef> m_BundleCache = new Dictionary<string, BundleRef>();

        public void ClearBundles()
        {
            foreach (var pair in m_BundleCache)
            {
                pair.Value?.Release();
            }

            m_BundleCache.Clear();
        }

        public void ClearBundle(string bundleName)
        {
            if (!m_BundleCache.ContainsKey(bundleName)) return;
            m_BundleCache[bundleName]?.Release();
            m_BundleCache.Remove(bundleName);
        }

        public void CacheBundle(string bundleName, BundleRef bundle)
        {
            m_BundleCache[bundleName] = bundle;
        }

        public bool CheckBundleExist(string bundleName)
        {
            return m_BundleCache.ContainsKey(bundleName);
        }

        public BundleRef GetBundle(string bundleName)
        {
            return m_BundleCache.ContainsKey(bundleName) ? m_BundleCache[bundleName] : null;
        }
    }
}