using XGame.Framework.Asset;
using XGame.Framework.Asset.Addressable.Data;
using System;
using UnityEditor;

namespace XGame.Editor.Asset
{
    public static class AddressableAssetInfoExt
    {
        /// <summary>
        /// 编辑器扩展方法
        /// </summary>
        /// <param name="assetInfo"></param>
        /// <returns></returns>
        public static string GetAssetPath(this AssetInfo assetInfo)
        {
            return AssetDatabase.GUIDToAssetPath(assetInfo.assetGUID);
        }
        /// <summary>
        /// 是否内置资源
        /// </summary>
        /// <param name="assetInfo"></param>
        /// <returns></returns>
        public static bool IsBuiltIn(this AssetInfo assetInfo)
        {
            var assetPath = assetInfo.GetAssetPath();
            if (!string.IsNullOrEmpty(assetPath) && assetPath.IndexOf(PathDefine.PackageRelative, StringComparison.Ordinal) == 0)
            {
                return true;
            }
            return false;
        }
        ///// <summary>
        ///// 编辑器扩展方法
        ///// </summary>
        ///// <param name="assetInfo"></param>
        ///// <param name="id"></param>
        //public static void SetAddressableId(this AddressableAssetInfo assetInfo, long id)
        //{
        //    var fileInfo = assetInfo.GetType().GetField("addressableId", BindingFlags.NonPublic | BindingFlags.Instance);
        //    fileInfo?.SetValue(assetInfo, id);
        //}
        ///// <summary>
        ///// 编辑器扩展方法
        ///// </summary>
        ///// <param name="assetInfo"></param>
        ///// <param name="name"></param>
        //public static void SetAddressableName(this AddressableAssetInfo assetInfo, string name)
        //{
        //    var fileInfo = assetInfo.GetType().GetField("addressableName", BindingFlags.NonPublic | BindingFlags.Instance);
        //    fileInfo?.SetValue(assetInfo, name);
        //}
        ///// <summary>
        ///// 编辑器扩展方法
        ///// </summary>
        ///// <param name="assetInfo"></param>
        ///// <param name="guid"></param>
        //public static void SetGUID(this AddressableAssetInfo assetInfo, string guid)
        //{
        //    var fileInfo = assetInfo.GetType().GetField("assetGUID", BindingFlags.NonPublic | BindingFlags.Instance);
        //    fileInfo?.SetValue(assetInfo, guid);
        //}
    }
}