From 19534ebb4da6460100e388ab6ec319976886cb5f Mon Sep 17 00:00:00 2001 From: Perfare Date: Thu, 22 Nov 2018 14:45:28 +0800 Subject: [PATCH] minor fixes --- AssetStudio/SerializedFile.cs | 1 + AssetStudioGUI/AssetStudioGUIForm.cs | 32 +++++++++++----------------- AssetStudioGUI/Studio.cs | 14 ++++++------ 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/AssetStudio/SerializedFile.cs b/AssetStudio/SerializedFile.cs index 9d1bdab..c0e4472 100644 --- a/AssetStudio/SerializedFile.cs +++ b/AssetStudio/SerializedFile.cs @@ -186,6 +186,7 @@ namespace AssetStudio public void SetVersion(string stringVersion) { + unityVersion = stringVersion; var buildSplit = Regex.Replace(stringVersion, @"\d", "").Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries); buildType = new BuildType(buildSplit[0]); var versionSplit = Regex.Replace(stringVersion, @"\D", ".").Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries); diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs index 635c155..bc725a5 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.cs @@ -148,9 +148,11 @@ namespace AssetStudioGUI treeNodeCollection = BuildTreeStructure(tempDic); } tempDic.Clear(); + + Dictionary> typeMap = null; if (buildClassStructuresMenuItem.Checked) { - BuildClassStructure(); + typeMap = BuildClassStructure(); } BeginInvoke(new Action(() => @@ -182,7 +184,7 @@ namespace AssetStudioGUI if (buildClassStructuresMenuItem.Checked) { classesListView.BeginUpdate(); - foreach (var version in AllTypeMap) + foreach (var version in typeMap) { var versionGroup = new ListViewGroup(version.Key); classesListView.Groups.Add(versionGroup); @@ -193,6 +195,7 @@ namespace AssetStudioGUI classesListView.Items.Add(uclass.Value); } } + typeMap.Clear(); classesListView.EndUpdate(); } @@ -299,31 +302,22 @@ namespace AssetStudioGUI private void exportClassStructuresMenuItem_Click(object sender, EventArgs e) { - if (AllTypeMap.Count > 0) + if (classesListView.Items.Count > 0) { var saveFolderDialog = new OpenFolderDialog(); if (saveFolderDialog.ShowDialog(this) == DialogResult.OK) { - var count = AllTypeMap.Count; + var savePath = saveFolderDialog.Folder; + var count = classesListView.Items.Count; int i = 0; Progress.Reset(); - foreach (var version in AllTypeMap) + foreach (TypeTreeItem item in classesListView.Items) { - var savePath = saveFolderDialog.Folder; - if (version.Value.Count > 0) - { - string versionPath = savePath + "\\" + version.Key; - Directory.CreateDirectory(versionPath); + var versionPath = savePath + "\\" + item.Group.Header; + Directory.CreateDirectory(versionPath); - foreach (var uclass in version.Value) - { - string saveFile = $"{versionPath}\\{uclass.Key} {uclass.Value.Text}.txt"; - using (var writer = new StreamWriter(saveFile)) - { - writer.Write(uclass.Value.ToString()); - } - } - } + var saveFile = $"{versionPath}\\{item.SubItems[1].Text} {item.Text}.txt"; + File.WriteAllText(saveFile, item.ToString()); Progress.Report(++i, count); } diff --git a/AssetStudioGUI/Studio.cs b/AssetStudioGUI/Studio.cs index cfec47d..1bafd74 100644 --- a/AssetStudioGUI/Studio.cs +++ b/AssetStudioGUI/Studio.cs @@ -18,7 +18,6 @@ namespace AssetStudioGUI public static AssetsManager assetsManager = new AssetsManager(); public static List exportableAssets = new List(); public static List visibleAssets = new List(); - public static Dictionary> AllTypeMap = new Dictionary>(); //TODO Delete it public static bool ModuleLoaded; public static Dictionary LoadedModuleDic = new Dictionary(); @@ -38,7 +37,7 @@ namespace AssetStudioGUI extractedCount += ExtractWebDataFile(fileName, reader); else reader.Dispose(); - Progress.Report(i + 1, fileName.Length); + Progress.Report(++i, fileNames.Length); } Logger.Info($"Finished extracting {extractedCount} files."); @@ -53,7 +52,6 @@ namespace AssetStudioGUI if (bundleFile.fileList.Count > 0) { var extractPath = bundleFileName + "_unpacked\\"; - Directory.CreateDirectory(extractPath); return ExtractStreamFile(extractPath, bundleFile.fileList); } return 0; @@ -67,7 +65,6 @@ namespace AssetStudioGUI if (webFile.fileList.Count > 0) { var extractPath = webFileName + "_unpacked\\"; - Directory.CreateDirectory(extractPath); return ExtractStreamFile(extractPath, webFile.fileList); } return 0; @@ -300,11 +297,12 @@ namespace AssetStudioGUI return treeNodeCollection; } - public static void BuildClassStructure() + public static Dictionary> BuildClassStructure() { + var typeMap = new Dictionary>(); foreach (var assetsFile in assetsManager.assetsFileList) { - if (AllTypeMap.TryGetValue(assetsFile.unityVersion, out var curVer)) + if (typeMap.TryGetValue(assetsFile.unityVersion, out var curVer)) { foreach (var type in assetsFile.m_Types.Where(x => x.m_Nodes != null)) { @@ -328,9 +326,11 @@ namespace AssetStudioGUI } items.Add(key, new TypeTreeItem(key, type.m_Nodes)); } - AllTypeMap.Add(assetsFile.unityVersion, items); + typeMap.Add(assetsFile.unityVersion, items); } } + + return typeMap; } public static string FixFileName(string str)