﻿using UnityEngine;
using Object = UnityEngine.Object;

namespace JLGames.RocketDriver.Actions.Loaderx
{
    internal abstract class BaseAssetLoader
    {
        public abstract T LoadAssetSync<T>(string assetPath, AssetBundle bundle) where T : Object;

        public abstract T LoadAssetSyncFull<T>(string fullPath, AssetBundle bundle) where T : Object;

        public virtual T[] LoadAssetsSync<T>(string[] assetPaths, AssetBundle ab) where T : Object
        {
            if (null == assetPaths || assetPaths.Length == 0) return null;
            var rs = new T[assetPaths.Length];
            for (var index = 0; index < rs.Length; index++)
            {
                rs[index] = LoadAssetSync<T>(assetPaths[index], ab);
            }

            return rs;
        }

        public virtual T[] LoadAssetsSyncFull<T>(string[] assetNames, AssetBundle ab) where T : Object
        {
            if (null == assetNames || assetNames.Length == 0) return null;
            var rs = new T[assetNames.Length];
            for (var index = 0; index < rs.Length; index++)
            {
                rs[index] = LoadAssetSyncFull<T>(assetNames[index], ab);
            }

            return rs;
        }
    }
}