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那种文件夹使用 // folderPath .../assets/temp/ // urlRoot assets/temp/ //temp sound那种文件夹,根据文件夹下子文件夹生成组,一个文件夹一组 public static void Folder2Groups(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 = FolderGenerate.Folder2Group(path, urlRoot); if (group != null) { listGroup.Add(group); } } } }
public static List <Res> Folder2Reses(string folderPath, string urlRoot, List <Res> list) { FolderGenerate.Folder2Res(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, folderName); FolderGenerate.Folder2Reses(path, url, list); } return(list); }
//singles那种文件夹使用 // folderPath .../assets/temp/avatar // urlRoot assets/temp/(avatar) public static Group Folder2Group(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, folder.Name); FolderGenerate.Folder2Reses(folderPath, url, list); group.listRes = list; group.Keys = group.GenerateKey(); return(group); }
static void Main(string[] args) { Console.WriteLine("请稍候,不要关闭程序..."); #region 读取配置 string curFolder = Environment.CurrentDirectory; var configJsonText = FileUtil.Load(curFolder + "\\config.json"); JToken configJToken = JToken.Parse(configJsonText); DirectoryInfo curDirInfo = new DirectoryInfo(curFolder); string root = curDirInfo.Parent.FullName;//工程目录 if (configJToken["root"] != null) { root = configJToken["root"].Value <string>();//配置的root路径 } Program.ProjectRootPath = root; string resourcePath = root + @"\Egret\resource";//resource路径 resourcePath += "\\"; Program.ResourcePath = resourcePath; string webResourcePath = root; if (configJToken["webResourcePath"] != null) { webResourcePath += configJToken["webResourcePath"].Value <string>(); webResourcePath += "\\"; } Program.WebResourcePath = webResourcePath; //是否忽略本地中的WebAvatar文件夹 if (configJToken["ignoreWeb"] != null) { Program.IgnoreWeb = configJToken["ignoreWeb"].Value <bool>(); } string version = ""; if (configJToken["version"] != null) { version = configJToken["version"].Value <string>(); } Program.Version = version; //版本号 string confVersionFolder = configJToken["versionFolder"].Value <string>(); //版本文件夹名gangsterRes Program.VersionFolder = confVersionFolder + Program.Version.Replace(".", ""); //gangsterRes001 if (configJToken["generate"] != null) { AssetOperation.isGenerate = configJToken["generate"].Value <bool>();; } if (configJToken["uploading"] != null) { AssetOperation.isUploading = configJToken["uploading"].Value <bool>(); } if (configJToken["uploadingOuterNet"] != null) { AssetOperation.isUploadingOuterNet = configJToken["uploadingOuterNet"].Value <bool>(); } Program.LockOuterNet = configJToken["lockOuterNet"].Value <bool>(); #endregion #region 生成本地default.res.json Program.AddVersion = false; //不加版本号后缀 VersionUtils.UseVersionSuffix = false; var generateLocal = configJToken["generatelocal"].Value <bool>(); bool tempIgnoreWeb = Program.IgnoreWeb; Program.IgnoreWeb = true; //先在Tools文件夹生成一个 FolderGenerate.Init(); if (generateLocal) { string tooldefaultResJson = curFolder + "\\" + configJToken["defaultresjson"].Value <string>(); GenerateUtil.GenerateLocal(configJToken, resourcePath, tooldefaultResJson); } Program.IgnoreWeb = tempIgnoreWeb; //生成本地使用的 FolderGenerate.Init(); if (generateLocal) { string defaultResJson = resourcePath + configJToken["defaultresjson"].Value <string>(); GenerateUtil.GenerateLocal(configJToken, resourcePath, defaultResJson); } #endregion #region 更改的资源 //Program.IgnoreWeb = true;//不忽略,就是生成网络资源 //Program.AddVersion = true; //VersionUtils.UseVersionSuffix = true;//加版本号后缀 //FolderGenerate.Init(); //if( AssetOperation.isGenerate ) { // AssetOperation.MainOperation( root, configJToken ); //} #endregion #region 生成patch,将更改的文件复制到根目录一个文件夹 //是否生成patch更改的资源文件夹 var IsGeneratePathDir = configJToken["generatePathDir"].Value <bool>(); if (IsGeneratePathDir) { PatchTool.PatchOperation.MainPatch(configJToken); } #endregion #region 生成网络res.json var generateWeb = configJToken["generateWeb"].Value <bool>(); if (generateWeb) { string resName = configJToken["gangsterresjson"].Value <string>(); resName = resName.Replace("[version]", Program.Version); string gangsterResJson = webResourcePath + resName; GenerateUtil.GenerateWeb(configJToken, webResourcePath, gangsterResJson); Program.Gangster_0_0_0_Path = gangsterResJson; Program.Gangster0_0_0_res_json = resName; } #endregion #region ftp FTPUtils.InitFTP(configJToken); MainUploading.MainUpload(); #endregion if (needStop) { Console.ReadKey(); } }
static void Main(string[] args) { Console.WriteLine("请稍候,不要关闭程序..."); //GenerateTool文件夹 string generateToolFolder = Environment.CurrentDirectory; var configJsonText = FileUtil.Load(generateToolFolder + "\\config.json"); JToken configJToken = JToken.Parse(configJsonText); DirectoryInfo generateToolInfo = new DirectoryInfo(generateToolFolder); string root = generateToolInfo.Parent.Parent.FullName;//工程目录 #region 读取配置 if (configJToken["root"] != null) { root = configJToken["root"].Value <string>(); //配置的root路径 } string resourcePath = root + @"\Egret\resource"; //resource路径 resourcePath += "\\"; string webResourcePath = resourcePath; if (configJToken["webResourcePath"] != null) { webResourcePath = root + configJToken["webResourcePath"].Value <string>(); webResourcePath += "\\"; } if (configJToken["ignoreWeb"] != null) { Program.IgnoreWeb = configJToken["ignoreWeb"].Value <bool>(); } string version = ""; if (configJToken["version"] != null) { version = configJToken["version"].Value <string>(); } Program.Version = version.Replace(".", ""); Program.VersionFolder = configJToken["versionFolder"].Value <string>(); //if( configJToken["svnPath"] != null ) { // SVNVersion.InitSVNClient( configJToken["svnPath"].Value<string>() ); //} #endregion #region 生成本地default.res.json //不加版本号后缀 VersionUtils.UseVersionSuffix = false; FolderGenerate.Init(); var generateLocal = configJToken["generatelocal"].Value <bool>(); if (generateLocal) { string defaultResJson = resourcePath + configJToken["defaultresjson"].Value <string>(); GenerateUtil.GenerateLocal(configJToken, resourcePath, defaultResJson); } #endregion #region 记录更改待上传的资源 if (configJToken["uploading"] != null) { var uploading = configJToken["uploading"].Value <bool>(); UploadingTool.MainUploading.isUploading = uploading; } if (UploadingTool.MainUploading.isUploading) { //生成改变的资源组 UploadingTool.MainUploading.MainProgram(root, configJToken); } #endregion #region 生成网络res.json Program.IgnoreWeb = false;//不忽略,就是生成网络资源 //加版本号后缀 VersionUtils.UseVersionSuffix = true; FolderGenerate.Init(); var generateWeb = configJToken["generateWeb"].Value <bool>(); if (generateWeb) { string resName = configJToken["gangsterresjson"].Value <string>(); resName = resName.Replace("[version]", version); string gangsterResJson = webResourcePath + resName; GenerateUtil.GenerateWeb(configJToken, webResourcePath, gangsterResJson); } #endregion #region ftp UploadingTool.FTPUtils.InitFTP(configJToken); UploadingTool.MainUploading.Uploading(resourcePath); #endregion //SVNVersion.DeinitSVNClient(); if (needStop) { Console.ReadKey(); } }
//"url": "assets/singles/City1.png", //"type": "image", //"name": "City1" public static void Folder2Res(string folderPath, string urlRoot, List <Res> list) { if (!Directory.Exists(folderPath)) { return; } DirectoryInfo folder = new DirectoryInfo(folderPath); var folderName = folder.Name; 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; if (Program.AddVersion) { res.Url = Program.VersionFolder + "/" + res.Url; } res.Name = fileName; if (extension == ".png" || extension == ".jpg") { var existImg = list.Find(n => n.Name == fileName && n.Type == "image"); if (existImg != null) { Program.ConsoleLog("存在重复文件名文件" + urlRoot + "/" + item.Name); } var jsonImg = list.Find(n => n.Name == fileName && n.Type == "json"); if (jsonImg != null) { //龙骨文件 _png _json res.Name = fileName + "_png"; jsonImg.Name = fileName + "_json"; } var fontBin = list.Find(n => n.Name == fileName && n.Type == "font"); if (fontBin != null) { //字体 _png _fnt res.Name = fileName;// fileName + "_png";singles里的字体文件BattleDMG fontBin.Name = fileName + "_fnt"; } res.Type = "image"; } else if (extension == ".json") { var dragonImg = list.Find(n => n.Name == fileName && n.Type == "image"); if (dragonImg != null) { //龙骨文件 _png _json res.Name = fileName + "_json"; dragonImg.Name = fileName + "_png"; } res.Type = "json"; } else if (extension == ".txt") { res.Type = "text"; } else if (extension == ".ttf" || extension == ".font" || extension == ".fnt") { string tempName = ""; for (int i = 0; i < name.Length - 1; i++) { tempName += name[i]; if (i < name.Length - 2) { tempName += "_"; } } res.Name = tempName; var fontImg = list.Find(n => n.Name == fileName && n.Type == "image"); if (fontImg != null) { //字体 _png _fnt res.Name = fileName + "_fnt"; fontImg.Name = fileName;// fileName + "_png";singles里的字体文件BattleDMG } res.Type = "font"; } else if (extension == ".mp3" || extension == ".wav" || extension == ".ogg") { res.Type = "sound"; } else if (extension == ".spb" || extension == ".sproto") { res.Name = fileName + "_" + extension.Replace(".", ""); res.Type = "bin"; } else { //其他识别为二进制 //还有一个sheet res.Type = "bin"; } list.Add(res); //检测重名 FolderGenerate.CheckRepeat(res); } }