﻿using JLGames.RocketDriver.Actions.Loaderx;
using UnityEngine;

namespace JLGames.RocketDriver.Actions.Audio
{
    /// <summary>
    /// Audio loader that depends on Loaderx
    /// 依赖于Loaderx的音频加载器
    /// </summary>
    public sealed class AudioLoader : IAudioLoaderAdapter
    {
        private string m_BundleName;

        public void SetBundleName(string bundleName)
        {
            m_BundleName = bundleName;
        }

        public void LoadClip(string path, AudioLoaderDelegate.OnLoaded onLoaded)
        {
            LoadClip(m_BundleName, path, onLoaded);
        }

        public void LoadClip(string bundleName, string path, AudioLoaderDelegate.OnLoaded onLoaded)
        {
            Loader.LoadBundleAsync(bundleName, (bundleRef, suc) =>
            {
                if (!suc)
                {
                    onLoaded.Invoke(null, false);
                    return;
                }

                var clip = Loader.LoadAssetSync<AudioClip>(path, bundleRef.Bundle);
                if (null == clip)
                {
                    onLoaded.Invoke(null, false);
                    return;
                }

                onLoaded.Invoke(clip, true);
            });
        }
    }
}