Ejemplo n.º 1
0
 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);
             }
         }
     }
 }
Ejemplo n.º 2
0
 //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);
             }
         }
     }
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        //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);
        }
Ejemplo n.º 5
0
        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();
            }
        }
Ejemplo n.º 6
0
        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();
            }
        }
Ejemplo n.º 7
0
        //"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);
            }
        }