private void fixData(JToken data, JsonResetInfo resetInfo) { if (data != null && data.HasValues == true) { if (data[EnumAttriType.path].ToString() == "") { return; } //图片路径(单图是相对fullName,碎图是name) string path = data[EnumAttriType.path].ToString(); //获取图片name int lastIndex = path.LastIndexOf(@"/"); string name = path.Substring(lastIndex + 1); //有真实图片 if (dictImgInfo.ContainsKey(name) == true) { ImgInfo imgInfo = dictImgInfo[name]; //单图 if (imgInfo.plist == null) { data[EnumAttriType.path] = (imgInfo.path + "/" + imgInfo.name).Replace(this.dealImagePath + "/", ""); data[EnumAttriType.plistFile] = ""; //记录到单图列表 resetInfo.addSingleImage(data[EnumAttriType.path].ToString()); } //碎图 else { data[EnumAttriType.path] = imgInfo.name; data[EnumAttriType.plistFile] = imgInfo.plist.Replace(this.dealImagePath + "/", ""); //记录到plist列表 resetInfo.addPlist(data[EnumAttriType.plistFile].ToString()); } } //没真实图片 else { data[EnumAttriType.path] = "ui/daitu.png"; //图片设置为daitu.png data[EnumAttriType.plistFile] = ""; //plistFile设置为"" //记录到单图列表 resetInfo.addSingleImage(data[EnumAttriType.path].ToString()); } } }
private void checkCCNodeChildren(JToken ccNodeParent, JsonResetInfo resetInfo) { JToken options = ccNodeParent[EnumAttriType.options]; //JToken fileData = options[enumAttriType.fileNameData]; //if (fileData == null) //{ // fileData = options[enumAttriType.backGroundImageData]; //} //修复数据 List <string> keyList = EnumAttriType.getImageKeyList(); foreach (var str in keyList) { JToken fileData = options[str]; fixData(fileData, resetInfo); } foreach (JToken ccNode in ccNodeParent[EnumAttriType.children]) { checkCCNodeChildren(ccNode, resetInfo); } }
private void dealUiJsonFile(FileInfo file) { if (file.Extension == EnumFileType.json) { //if (file.Name == "layout_login.json") //{ // Console.WriteLine("================="); //} //if (setNeedFixJsonFileName.Contains(file.Name) == false) //{ // return; //} JsonResetInfo resetInfo = new JsonResetInfo(); JObject jsonObj = JsonUtils.getJsonObjFromJsonFile(file.FullName); //递归遍历cocos2d的节点树,修改图片路径 JToken ccNodeRoot = jsonObj.GetValue(EnumAttriType.widgetTree); checkCCNodeChildren(ccNodeRoot, resetInfo); #region 似乎不需要改textures, texturesPng ////修改texturesPng属性 //JArray imgs = (JArray)jsonObj.GetValue(enumAttriType.texturesPng); //foreach (var item in resetInfo.dictSingleImage) //{ // bool isAdd = true; // foreach (JToken jt in imgs) // { // if (jt.ToString() == item) // { // isAdd = false; // break; // } // } // if (isAdd) // { // imgs.Add(item); // } //} ////修改textures属性 , ////JArray plists = (JArray)jsonObj.GetValue(enumAttriType.textures); ////plists.Clear(); //foreach (var item in resetInfo.dictPlists) //{ // //plists.Add(item); // bool isAdd = true; // foreach (JToken jt in imgs) // { // if (jt.ToString() == item) // { // isAdd = false; // break; // } // } // if (isAdd) // { // imgs.Add(item); // } //} #endregion //拷贝图片(做了链接,不需要拷贝了) //string strUIProjectResPath = Path.Combine(file.DirectoryName, "../Resources"); //foreach (var item in resetInfo.dictSingleImage) //{ // string srcSingleImgFullName = Path.Combine(this.dealImagePath, item); // string destSingleImgFullName = Path.Combine(strUIProjectResPath, item); // FileUtils.copyFile(srcSingleImgFullName, destSingleImgFullName, true); //} //foreach(var item in resetInfo.dictPlists) //{ // string srcPlistFullName = Path.Combine(this.dealImagePath, item); // string srcImageFullName = srcPlistFullName.Replace(EnumFileType.plist, EnumFileType.png); // if (File.Exists(srcImageFullName) == false) // { // srcImageFullName = srcPlistFullName.Replace(EnumFileType.plist, EnumFileType.jpg); // } // string destPlistFullName = srcPlistFullName.Replace(this.dealImagePath, strUIProjectResPath); // string destImageFullName = srcImageFullName.Replace(this.dealImagePath, strUIProjectResPath); // FileUtils.copyFile(srcPlistFullName, destPlistFullName, true); // FileUtils.copyFile(srcImageFullName, destImageFullName, true); //} //保存到文件 JsonUtils.writeJsonStrToFile(jsonObj, file.FullName); //LogUtils.WriteLine("json文件修改=====>{0}\n", file.FullName); //将json文件拷贝到转换成lua的路径 FileUtils.copyFile(file.FullName, Path.Combine(this.parseToolPath + @"\json", file.Name), true); } }