using System;
using XGame.Framework.Asset;

namespace XGame.Framework.UI
{
    internal class UIAssetModule : IUIAssetModule, IDisposable
    {
        private IAssetModule _assetModule;

        public UIAssetModule()
        {
            _assetModule = new AssetModule();
        }

        IAssetLoadAsync<TResult> IUIAssetModule.LoadAsync<TResult>(string addressableName)
        {
            return _assetModule.LoadAsync<TResult>(addressableName);
        }

        void IUIAssetModule.Recycle(UnityEngine.Object obj)
        {
            _assetModule.Recycle(obj);
        }

        void IUIAssetModule.StopAllAsyncs()
        {
            _assetModule.StopAllAsyncs();
        }

        //void IUIAssetModule.UnloadUnusedAssets()
        //{
        //    _assetModule.UnloadUnusedAssets();
        //}

        void IDisposable.Dispose()
        {
            (_assetModule as IDisposable)?.Dispose();
            _assetModule = null;
        }
    }
}
