void OnGUI() { GUIStyle styleCmdArea = new GUIStyle(); styleCmdArea.normal.background = MakeTex(600, 80, Color.white); // info area GUILayout.BeginArea(new Rect(10, 10, 600, 80), styleCmdArea); GUILayout.BeginHorizontal(); GUILayout.Label("Platform:", GUILayout.Width(200)); selectedPlatform = EditorGUILayout.Popup(selectedPlatform, listPlatform.ToArray()); switch (selectedPlatform) { case 0: if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) { EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android); LoadConfigXML(CommonPatcherData.cnfFN); LoadVersionXML(); } else { GUILayout.EndHorizontal(); } break; case 1: if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.StandaloneWindows) { EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.StandaloneWindows); LoadConfigXML(CommonPatcherData.cnfFN); LoadVersionXML(); } else { GUILayout.EndHorizontal(); } break; } GUILayout.BeginHorizontal(); GUILayout.Label("Last Version : " + lastMajorVersion + "." + lastMinorVersion); GUILayout.Label(">>>"); GUILayout.Label("New Version :"); chkLastMajorVersion = GUILayout.TextField("" + chkLastMajorVersion); chkLastMinorVersion = GUILayout.TextField("" + chkLastMinorVersion); if (GUILayout.Button("Apply", GUILayout.Width(70))) { // apply last version info and make folders and modify xml files. if (EditorUtility.DisplayDialog("You know that ?!", "This work just makes a folder for new version and change the text of last version. Later, you can make new resources for next patch when you press the button [Upload to repository].", "I see!!") == true) { SaveVersionXML(); } } if (GUILayout.Button("Rollback", GUILayout.Width(70))) { string prevVersion = PatchVersion.getPreviousVersion(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.patchVersionFN); int prevMajor = Convert.ToInt32(prevVersion.Split('_')[1]); int prevMinor = Convert.ToInt32(prevVersion.Split('_')[2]); string curVersion = verDoc.SelectSingleNode("/VERSIONS/PATCH").Attributes["LastVersion"].Value; int curMajor = Convert.ToInt32(curVersion.Split('_')[1]); int curMinor = Convert.ToInt32(curVersion.Split('_')[2]); if (EditorUtility.DisplayDialog("Caution!!", "Your last version(VER " + curMajor.ToString("D2") + "." + curMinor.ToString("D3") + ") data will remove complete. Are you sure?", "YES", "NO") == true) { // check last version Debug.Log("Rollback to previous Version >> " + prevVersion); // modify patch.xml file verDoc.SelectSingleNode("/VERSIONS/PATCH").Attributes["LastVersion"].Value = prevVersion; PatchVersion.removeVersionNode(verDoc, curMajor, curMinor); XmlTool.writeXml(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.patchVersionFN, verDoc); // remove assets.xml and files, and backup folder string _dn = CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/VER_" + curMajor.ToString("D2") + "/" + curMinor.ToString("D3"); Directory.Delete(_dn, true); // latest folder change Directory.Delete(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.lastVersionRepo, true); Directory.Move(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.lastVersionRepo + "_VER_" + curMajor.ToString("D2") + "_" + curMinor.ToString("D3"), CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.lastVersionRepo); lastMajorVersion = prevMajor; chkLastMajorVersion = curMajor.ToString("D2"); lastMinorVersion = prevMinor; chkLastMinorVersion = curMinor.ToString("D3"); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Path :"); CommonPatcherData.repoPath = GUILayout.TextField(CommonPatcherData.repoPath); // read config file if (GUILayout.Button("Read", GUILayout.Width(100))) { LoadConfigXML(CommonPatcherData.cnfFN); } if (GUILayout.Button("Save", GUILayout.Width(100))) { cnfDoc.SelectSingleNode("/ToolConfig/Repository").Attributes ["path"].Value = CommonPatcherData.repoPath; SaveConfigXML(CommonPatcherData.cnfFN, cnfDoc); MakeLocalRepo(); } GUILayout.EndHorizontal(); GUILayout.EndArea(); // command area GUILayout.BeginArea(new Rect(10, 100, 600, 140)); GUILayout.BeginHorizontal(); if (GUILayout.Button("Build AssetBundles", GUILayout.Width(150))) { ActiveABMWType = ABMWType.Build; BuildScript.BuildAssetBundles(); return; } if (GUILayout.Button("unregisted assets", GUILayout.Width(150))) { ActiveABMWType = ABMWType.Unregisted; checkUnregistedAssets(); } if (GUILayout.Button("All AssetBundles List", GUILayout.Width(150))) { ActiveABMWType = ABMWType.PatchInfo; checkRegistedAssets(); } if (GUILayout.Button("Upload to repository", GUILayout.Width(150))) { if (EditorUtility.DisplayDialog("Upload !!", "Did you make a folder for new version?! If not, press the button [apply]. This will make a folder and change the version number for new version.", "I DID!!", "Ooops!") == true) { ActiveABMWType = ABMWType.Upload; BuildScript.BuildAssetBundles(); // compare all AssetBundles with "repoPath + lastVersionRepo"'s all files List <FileInfo> listNew = new List <FileInfo>(); List <FileInfo> listModify = new List <FileInfo>(); List <FileInfo> listRemoved = new List <FileInfo>(); { DirectoryInfo latestDir = new DirectoryInfo(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget); FileInfo [] latestABFiles = latestDir.GetFiles("*.*", SearchOption.AllDirectories); DirectoryInfo buildDir = new DirectoryInfo(BuildScript.GetAssetBundleBuildPath() + "/" + EditorUserBuildSettings.activeBuildTarget); FileInfo [] newABFiles = buildDir.GetFiles("*.*", SearchOption.AllDirectories); int newIndex = 0; foreach (FileInfo fi in newABFiles) { int latestIndex = 0; foreach (FileInfo latefi in latestABFiles) { int ret = compareFile(fi, latefi); if (ret == 0) // completely different { } else if (ret == 1) // same exactly { break; } else if (ret == 2) // modified { listModify.Add(fi); break; } latestIndex++; } if (latestIndex == latestABFiles.Length) { listNew.Add(fi); } newIndex++; } foreach (FileInfo latefiR in latestABFiles) { int chkIndex = 0; foreach (FileInfo fiR in newABFiles) { if (fiR.Name == latefiR.Name) { break; } chkIndex++; } if (chkIndex == latestABFiles.Length) { listRemoved.Add(latefiR); } } } // upload updated AssetBundles to the new repository. SaveAssetsXML(listNew, listModify, listRemoved); } } GUILayout.EndHorizontal(); GUILayout.EndArea(); // console area GUILayout.BeginArea(new Rect(10, 150, 600, 600)); switch (ActiveABMWType) { case ABMWType.Build: break; case ABMWType.Unregisted: ListUnregistedAssets(); break; case ABMWType.PatchInfo: ListRegistedAssets(); break; case ABMWType.Upload: break; } GUILayout.EndArea(); }
void OnGUI(){ GUIStyle styleCmdArea = new GUIStyle(); styleCmdArea.normal.background = MakeTex(600, 80, Color.white); // info area GUILayout.BeginArea (new Rect (10, 10, 600, 80), styleCmdArea); GUILayout.BeginHorizontal(); GUILayout.Label ("Platform:", GUILayout.Width(200)); selectedPlatform = EditorGUILayout.Popup( selectedPlatform, listPlatform.ToArray() ); switch (selectedPlatform) { case 0: if(EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android){ EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTarget.Android ); LoadConfigXML (CommonPatcherData.cnfFN); LoadVersionXML (); }else GUILayout.EndHorizontal(); break; case 1: if(EditorUserBuildSettings.activeBuildTarget != BuildTarget.StandaloneWindows){ EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTarget.StandaloneWindows ); LoadConfigXML (CommonPatcherData.cnfFN); LoadVersionXML (); }else GUILayout.EndHorizontal(); break; } GUILayout.BeginHorizontal(); GUILayout.Label ("Last Version : "+ lastMajorVersion + "."+lastMinorVersion); GUILayout.Label (">>>"); GUILayout.Label ("New Version :"); chkLastMajorVersion = GUILayout.TextField(""+chkLastMajorVersion); chkLastMinorVersion = GUILayout.TextField(""+chkLastMinorVersion); if (GUILayout.Button ("Apply", GUILayout.Width (70))) { // apply last version info and make folders and modify xml files. if(EditorUtility.DisplayDialog("You know that ?!","This work just makes a folder for new version and change the text of last version. Later, you can make new resources for next patch when you press the button [Upload to repository].","I see!!") == true){ SaveVersionXML(); } } if (GUILayout.Button ("Rollback", GUILayout.Width (70))) { string prevVersion = PatchVersion.getPreviousVersion( CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.patchVersionFN ); int prevMajor = Convert.ToInt32(prevVersion.Split('_')[1]); int prevMinor = Convert.ToInt32(prevVersion.Split('_')[2]); string curVersion = verDoc.SelectSingleNode("/VERSIONS/PATCH").Attributes["LastVersion"].Value; int curMajor = Convert.ToInt32(curVersion.Split('_')[1]); int curMinor = Convert.ToInt32(curVersion.Split('_')[2]); if(EditorUtility.DisplayDialog("Caution!!","Your last version(VER "+ curMajor.ToString ("D2") + "." + curMinor.ToString ("D3") +") data will remove complete. Are you sure?","YES","NO") == true) { // check last version Debug.Log ( "Rollback to previous Version >> "+ prevVersion); // modify patch.xml file verDoc.SelectSingleNode("/VERSIONS/PATCH").Attributes["LastVersion"].Value = prevVersion; PatchVersion.removeVersionNode( verDoc, curMajor, curMinor); XmlTool.writeXml(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/"+CommonPatcherData.patchVersionFN , verDoc); // remove assets.xml and files, and backup folder string _dn = CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/VER_" + curMajor.ToString ("D2") + "/" + curMinor.ToString ("D3"); Directory.Delete(_dn,true); // latest folder change Directory.Delete(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/"+CommonPatcherData.lastVersionRepo, true); Directory.Move ( CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.lastVersionRepo + "_VER_" + curMajor.ToString ("D2") + "_" + curMinor.ToString ("D3"), CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/"+CommonPatcherData.lastVersionRepo); lastMajorVersion = prevMajor; chkLastMajorVersion = curMajor.ToString ("D2"); lastMinorVersion = prevMinor; chkLastMinorVersion = curMinor.ToString ("D3"); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label ("Path :"); CommonPatcherData.repoPath = GUILayout.TextField(CommonPatcherData.repoPath); // read config file if (GUILayout.Button ("Read", GUILayout.Width (100))) { LoadConfigXML ( CommonPatcherData.cnfFN ); } if (GUILayout.Button ("Save", GUILayout.Width (100))) { cnfDoc.SelectSingleNode ("/ToolConfig/Repository").Attributes ["path"].Value = CommonPatcherData.repoPath; SaveConfigXML(CommonPatcherData.cnfFN , cnfDoc); MakeLocalRepo(); } GUILayout.EndHorizontal(); GUILayout.EndArea(); // command area GUILayout.BeginArea (new Rect (10, 100, 600, 140)); GUILayout.BeginHorizontal(); if (GUILayout.Button ("Build AssetBundles", GUILayout.Width (150))) { ActiveABMWType=ABMWType.Build; BuildScript.BuildAssetBundles(); return; } if (GUILayout.Button ("unregisted assets", GUILayout.Width (150))) { ActiveABMWType=ABMWType.Unregisted; checkUnregistedAssets(); } if (GUILayout.Button ("All AssetBundles List", GUILayout.Width (150))) { ActiveABMWType=ABMWType.PatchInfo; checkRegistedAssets(); } if (GUILayout.Button ("Upload to repository", GUILayout.Width (150))) { if(EditorUtility.DisplayDialog("Upload !!","Did you make a folder for new version?! If not, press the button [apply]. This will make a folder and change the version number for new version.","I DID!!", "Ooops!") == true){ ActiveABMWType=ABMWType.Upload; BuildScript.BuildAssetBundles(); // compare all AssetBundles with "repoPath + lastVersionRepo"'s all files List<FileInfo> listNew = new List<FileInfo>(); List<FileInfo> listModify = new List<FileInfo>(); List<FileInfo> listRemoved = new List<FileInfo>(); { DirectoryInfo latestDir = new DirectoryInfo(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget); FileInfo [] latestABFiles = latestDir.GetFiles("*.*", SearchOption.AllDirectories); DirectoryInfo buildDir = new DirectoryInfo( BuildScript.GetAssetBundleBuildPath() + "/"+EditorUserBuildSettings.activeBuildTarget); FileInfo [] newABFiles = buildDir.GetFiles("*.*", SearchOption.AllDirectories); int newIndex = 0; foreach(FileInfo fi in newABFiles) { int latestIndex = 0; foreach(FileInfo latefi in latestABFiles) { int ret = compareFile(fi, latefi); if( ret == 0){ // completely different }else if( ret == 1){// same exactly break; }else if( ret == 2){ // modified listModify.Add(fi); break; } latestIndex++; } if(latestIndex == latestABFiles.Length) { listNew.Add(fi); } newIndex++; } foreach(FileInfo latefiR in latestABFiles){ int chkIndex = 0; foreach(FileInfo fiR in newABFiles){ if(fiR.Name == latefiR.Name) { break; } chkIndex++; } if(chkIndex == latestABFiles.Length) listRemoved.Add(latefiR); } } // upload updated AssetBundles to the new repository. SaveAssetsXML(listNew, listModify, listRemoved); } } GUILayout.EndHorizontal (); GUILayout.EndArea (); // console area GUILayout.BeginArea (new Rect (10, 150, 600, 600)); switch (ActiveABMWType) { case ABMWType.Build: break; case ABMWType.Unregisted: ListUnregistedAssets (); break; case ABMWType.PatchInfo: ListRegistedAssets (); break; case ABMWType.Upload: break; } GUILayout.EndArea (); }