public static void GenerateLocal(JToken configJToken, string resourcePath, string filePath) { List <Group> listGroup = new List <Group>(); GenerateUtil.GenerateConfig(listGroup, configJToken["assetsGroups"], resourcePath); //loading组 var loadingGroup = listGroup.Find(item => item.Name == "loading"); if (loadingGroup != null) { List <Res> listPreload = new List <Res>(); var listConfig = SpecialFolderGenerate.GenerateConfig(resourcePath); var listFont = SpecialFolderGenerate.GenerateFont(resourcePath); listPreload.AddRange(listConfig); listPreload.AddRange(listFont); loadingGroup.listRes.AddRange(listPreload); loadingGroup.Keys = loadingGroup.GenerateKey(); } //生成文件 GenerateUtil.GenerateFile(filePath, listGroup); }
public static void SheetFolder2Res(string folderPath, string urlRoot, List <Res> list) { DirectoryInfo folder = new DirectoryInfo(folderPath); FileInfo[] files = folder.GetFiles(); foreach (var item in files) { var ext = item.Extension; var extension = ext.ToLower(); var name = item.Name.Split('.'); var fileName = name[0]; Res res = new Res(); var url = Helper.GetUrl(urlRoot, item.Name + VersionUtils.GetVersion(item.FullName)); res.Url = url; res.Name = fileName; if (extension == ".png" || extension == ".jpg") { res.Type = "image"; var existImg = list.Find(n => n.Name == fileName && n.Type == "image"); if (existImg != null) { Program.needStop = true; Console.WriteLine("存在重复文件名文件" + urlRoot + "/" + item.Name); } var sheetJson = list.Find(n => n.Name == fileName && n.Type == "json"); list.Add(res); if (sheetJson != null) { //sheet sheetJson.Type = "sheet"; list.Remove(res); var fullName = item.FullName.Replace("png", "json"); //subKeys sheetJson.SubKeys = SpecialFolderGenerate.GenerateSubKeys(fullName); } } else if (extension == ".json") { res.Type = "json"; var sheetImg = list.Find(n => n.Name == fileName && n.Type == "image"); list.Add(res); if (sheetImg != null) { //sheet res.Type = "sheet"; list.Remove(sheetImg); //subKeys res.SubKeys = SpecialFolderGenerate.GenerateSubKeys(item.FullName); } } } }
public static void GenerateConfig(List <Group> listGroup, JToken groupConfigs, string resourcePath) { if (groupConfigs == null) { Program.ConsoleLog("缺少配置"); return; } foreach (var child in groupConfigs) { var confFolderPath = child["folderPath"].Value <string>(); var confUrlRoot = child["urlRoot"].Value <string>(); var isSingle = child["single"].Value <bool>(); var isSheet = false; if (child["sheet"] != null) { isSheet = child["sheet"].Value <bool>(); } if (isSheet) { if (isSingle) { var singleGroup = SpecialFolderGenerate.SheetFolder2Group(resourcePath + confFolderPath, confUrlRoot); if (singleGroup != null) { SpecialFolderGenerate.CheckDelGroup(singleGroup, listGroup); listGroup.Add(singleGroup); } } else { SpecialFolderGenerate.SheetFolder2Groups(resourcePath + confFolderPath, confUrlRoot, listGroup); } } else { if (isSingle) { var singleGroup = FolderGenerate.Folder2Group(resourcePath + confFolderPath, confUrlRoot); if (singleGroup != null) { listGroup.Add(singleGroup); } } else { FolderGenerate.Folder2Groups(resourcePath + confFolderPath, confUrlRoot, listGroup); } } } }
//temp sound那种文件夹,根据文件夹下子文件夹生成组,一个文件夹一组 public static void SheetFolder2Groups(string folderPath, string urlRoot, List <Group> listGroup) { if (Directory.Exists(folderPath)) { var allFolders = Directory.GetDirectories(folderPath, "*.*", SearchOption.TopDirectoryOnly); for (int i = 0; i < allFolders.Length; i++) { var path = allFolders[i]; Group group = SpecialFolderGenerate.SheetFolder2Group(path, urlRoot); if (group != null) { SpecialFolderGenerate.CheckDelGroup(group, listGroup); listGroup.Add(group); } } } }
public static List <Res> SheetFolder2Reses(string folderPath, string urlRoot, List <Res> list) { SpecialFolderGenerate.SheetFolder2Res(folderPath, urlRoot, list); var allFolders = Directory.GetDirectories(folderPath, "*.*", SearchOption.TopDirectoryOnly); for (int i = 0; i < allFolders.Length; i++) { var path = allFolders[i]; DirectoryInfo folder = new DirectoryInfo(path); string folderName = folder.Name; if (Program.CheckWebFolder(folderName)) { continue; } var url = Helper.GetUrl(urlRoot, folder.Name); SpecialFolderGenerate.SheetFolder2Reses(path, url, list); } return(list); }
// folderPath .../assets/temp/avatar // urlRoot assets/temp/(avatar) public static Group SheetFolder2Group(string folderPath, string urlRoot) { DirectoryInfo folder = new DirectoryInfo(folderPath); string folderName = folder.Name; if (Program.CheckWebFolder(folderName)) { return(null); } Group group = new Group(); group.Name = folderName;//temp下子文件夹 List <Res> list = new List <Res>(); var url = Helper.GetUrl(urlRoot, folderName); SpecialFolderGenerate.SheetFolder2Reses(folderPath, url, list); group.listRes = list; group.Keys = group.GenerateKey(); return(group); }