//using System.Collections.Generic;
//using System.IO;
//using System.Linq;
//using UnityEditor;
//using UnityEngine;
//namespace XGame.Editor.Build.AssetBundles
//{
// internal class BundleGroupController
// {
// private BundleContext _context;
// public BundleGroupController(BundleContext context)
// {
// _context = context;
// }
// ///
// /// 根据分组配置重新设置bundleName
// /// TODO: 多语言的Assetbundle分包也需要调整到设置
// ///
// public void ModifyBundleNameByGroup()
// {
// ModifyBundleNameByGroup(CollectBundleGroupNames());
// }
// ///
// /// 收集Assetbundle分组的GroupName
// ///
// ///
// ///
// ///
// private Dictionary CollectBundleGroupNames()
// {
// var groupNameMap = new Dictionary();
// var packerManifest = ABPackerInfoManifest.Load();
// if (packerManifest == null || packerManifest.GroupInfos == null || packerManifest.GroupInfos.Count < 1)
// {
// return groupNameMap;
// }
// foreach (var groupInfo in packerManifest.GroupInfos)
// {
// var groupName = groupInfo.groupName;
// if (string.IsNullOrEmpty(groupName) || FileUtil.HasChinese(groupName))
// {
// Debug.LogWarning($"[XBuild]AssetbundleGroup 名字为空或者包含中文字符. ID:{groupInfo.GroupId}");
// continue;
// }
// if (Framework.i18n.LanguageUtils.IsLanguage(groupName))
// {
// Debug.LogWarning($"[XBuild]AssetbundleGroup 名字不能为多语言枚举. GroupName:{groupName}");
// continue;
// }
// groupName = groupName.ToLower();
// foreach (var guid in groupInfo.guidList)
// {
// if (string.IsNullOrEmpty(guid))
// {
// continue;
// }
// var assetPath = AssetDatabase.GUIDToAssetPath(guid);
// if (!assetPath.StartsWith(PathDefine.ResAddressableRelative))
// {
// Debug.LogWarning($"[XBuild]AssetbundleGroup 路径错误. GroupName:{groupName} assetPath:{assetPath}");
// continue;
// }
// if (Directory.Exists(assetPath))
// {
// //是文件夹
// var filePaths = FileUtil.FindFiles(assetPath);
// foreach (var filePath in filePaths)
// {
// AddGroupItem(filePath, groupName, groupNameMap);
// }
// continue;
// }
// AddGroupItem(assetPath, groupName, groupNameMap);
// }
// }
// Debug.Log($"CollectBundleGroupNames Count:{groupNameMap.Count}");
// return groupNameMap;
// }
// private void AddGroupItem(string assetPath, string groupName, Dictionary groupNameMap)
// {
// if (!_context.TryGetAddressableNameByPath(assetPath, out var addressableName))
// {
// return;
// }
// if (groupNameMap.ContainsKey(assetPath))
// {
// return;
// }
// //Debug.Log($"[XBuild]AddGroupItem addressableName:{addressableName} groupName:{groupName}");
// groupNameMap.Add(assetPath, groupName);
// }
// ///
// /// 根据分组配置重新设置bundleName
// /// TODO: 多语言的Assetbundle分包也需要调整到设置
// ///
// ///
// ///
// private void ModifyBundleNameByGroup(Dictionary groupNameMap)
// {
// if (groupNameMap == null || groupNameMap.Count == 0)
// return;
// var builds = _context.bundleBuildMap.Values.ToArray();
// foreach (var build in builds)
// {
// if (TryGetGroupName(build.assetNames, groupNameMap, out var groupName))
// {
// var buildCopy = build;
// buildCopy.assetBundleName = $"{groupName}/{build.assetBundleName}";
// _context.bundleBuildMap[buildCopy.bundleId] = buildCopy;
// }
// }
// }
// private bool TryGetGroupName(string[] assetNames, Dictionary groupNameMap, out string groupName)
// {
// foreach (var assetName in assetNames)
// {
// if (groupNameMap.ContainsKey(assetName))
// {
// groupName = groupNameMap[assetName];
// return true;
// }
// }
// groupName = string.Empty;
// return false;
// }
// }
//}