From e53eacef7855df87638f9e7f466a0c34e99a2375 Mon Sep 17 00:00:00 2001 From: Perfare Date: Tue, 24 Mar 2020 11:31:57 +0800 Subject: [PATCH] improved --- AssetStudio/AssetsManager.cs | 25 ++++++++++++------------- AssetStudio/Classes/PPtr.cs | 10 +++++----- AssetStudio/ResourceReader.cs | 2 +- AssetStudio/SerializedFile.cs | 2 -- AssetStudioGUI/Studio.cs | 6 +++--- 5 files changed, 21 insertions(+), 24 deletions(-) diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index d2abcc7..8049d4e 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -9,12 +9,12 @@ namespace AssetStudio public class AssetsManager { public List assetsFileList = new List(); - internal Dictionary assetsFileIndexCache = new Dictionary(); - internal Dictionary resourceFileReaders = new Dictionary(); + internal Dictionary assetsFileIndexCache = new Dictionary(StringComparer.OrdinalIgnoreCase); + internal Dictionary resourceFileReaders = new Dictionary(StringComparer.OrdinalIgnoreCase); private List importFiles = new List(); - private HashSet importFilesHash = new HashSet(); - private HashSet assetsFileListHash = new HashSet(); + private HashSet importFilesHash = new HashSet(StringComparer.OrdinalIgnoreCase); + private HashSet assetsFileListHash = new HashSet(StringComparer.OrdinalIgnoreCase); public void LoadFiles(params string[] files) { @@ -37,7 +37,7 @@ namespace AssetStudio foreach (var file in files) { importFiles.Add(file); - importFilesHash.Add(Path.GetFileName(file).ToUpper()); + importFilesHash.Add(Path.GetFileName(file)); } Progress.Reset(); @@ -75,21 +75,21 @@ namespace AssetStudio private void LoadAssetsFile(string fullName, EndianBinaryReader reader) { var fileName = Path.GetFileName(fullName); - if (!assetsFileListHash.Contains(fileName.ToUpper())) + if (!assetsFileListHash.Contains(fileName)) { Logger.Info($"Loading {fileName}"); try { var assetsFile = new SerializedFile(this, fullName, reader); assetsFileList.Add(assetsFile); - assetsFileListHash.Add(assetsFile.upperFileName); + assetsFileListHash.Add(assetsFile.fileName); foreach (var sharedFile in assetsFile.m_Externals) { var sharedFilePath = Path.GetDirectoryName(fullName) + "\\" + sharedFile.fileName; var sharedFileName = sharedFile.fileName; - if (!importFilesHash.Contains(sharedFileName.ToUpper())) + if (!importFilesHash.Contains(sharedFileName)) { if (!File.Exists(sharedFilePath)) { @@ -103,7 +103,7 @@ namespace AssetStudio if (File.Exists(sharedFilePath)) { importFiles.Add(sharedFilePath); - importFilesHash.Add(sharedFileName.ToUpper()); + importFilesHash.Add(sharedFileName); } } } @@ -123,8 +123,7 @@ namespace AssetStudio private void LoadAssetsFromMemory(string fullName, EndianBinaryReader reader, string originalPath, string unityVersion = null) { var fileName = Path.GetFileName(fullName); - var upperFileName = fileName.ToUpper(); - if (!assetsFileListHash.Contains(upperFileName)) + if (!assetsFileListHash.Contains(fileName)) { try { @@ -135,7 +134,7 @@ namespace AssetStudio assetsFile.SetVersion(unityVersion); } assetsFileList.Add(assetsFile); - assetsFileListHash.Add(assetsFile.upperFileName); + assetsFileListHash.Add(assetsFile.fileName); } catch { @@ -143,7 +142,7 @@ namespace AssetStudio } finally { - resourceFileReaders.Add(upperFileName, reader); + resourceFileReaders.Add(fileName, reader); } } } diff --git a/AssetStudio/Classes/PPtr.cs b/AssetStudio/Classes/PPtr.cs index e763e45..be234a5 100644 --- a/AssetStudio/Classes/PPtr.cs +++ b/AssetStudio/Classes/PPtr.cs @@ -35,10 +35,10 @@ namespace AssetStudio if (index == -2) { var m_External = assetsFile.m_Externals[m_FileID - 1]; - var name = m_External.fileName.ToUpper(); + var name = m_External.fileName; if (!assetsFileIndexCache.TryGetValue(name, out index)) { - index = assetsFileList.FindIndex(x => x.upperFileName == name); + index = assetsFileList.FindIndex(x => x.fileName.Equals(name, StringComparison.OrdinalIgnoreCase)); assetsFileIndexCache.Add(name, index); } } @@ -91,8 +91,8 @@ namespace AssetStudio public void Set(T m_Object) { - var name = m_Object.assetsFile.upperFileName; - if (string.Equals(assetsFile.upperFileName, name, StringComparison.Ordinal)) + var name = m_Object.assetsFile.fileName; + if (string.Equals(assetsFile.fileName, name, StringComparison.OrdinalIgnoreCase)) { m_FileID = 0; } @@ -119,7 +119,7 @@ namespace AssetStudio if (!assetsFileIndexCache.TryGetValue(name, out index)) { - index = assetsFileList.FindIndex(x => x.upperFileName == name); + index = assetsFileList.FindIndex(x => x.fileName.Equals(name, StringComparison.OrdinalIgnoreCase)); assetsFileIndexCache.Add(name, index); } diff --git a/AssetStudio/ResourceReader.cs b/AssetStudio/ResourceReader.cs index 86c9f8e..51184af 100644 --- a/AssetStudio/ResourceReader.cs +++ b/AssetStudio/ResourceReader.cs @@ -34,7 +34,7 @@ namespace AssetStudio { var resourceFileName = Path.GetFileName(path); - if (assetsFile.assetsManager.resourceFileReaders.TryGetValue(resourceFileName.ToUpper(), out var reader)) + if (assetsFile.assetsManager.resourceFileReaders.TryGetValue(resourceFileName, out var reader)) { reader.Position = offset; return reader.ReadBytes(size); diff --git a/AssetStudio/SerializedFile.cs b/AssetStudio/SerializedFile.cs index 6c0d6e8..493f30f 100644 --- a/AssetStudio/SerializedFile.cs +++ b/AssetStudio/SerializedFile.cs @@ -13,7 +13,6 @@ namespace AssetStudio public string fullName; public string originalPath; public string fileName; - public string upperFileName; public int[] version = { 0, 0, 0, 0 }; public BuildType buildType; public Dictionary Objects; @@ -34,7 +33,6 @@ namespace AssetStudio this.reader = reader; this.fullName = fullName; fileName = Path.GetFileName(fullName); - upperFileName = fileName.ToUpper(); //ReadHeader header = new SerializedFileHeader(); diff --git a/AssetStudioGUI/Studio.cs b/AssetStudioGUI/Studio.cs index 5fb686d..f0fd211 100644 --- a/AssetStudioGUI/Studio.cs +++ b/AssetStudioGUI/Studio.cs @@ -101,7 +101,7 @@ namespace AssetStudioGUI StatusStripUpdate("Building asset list..."); productName = string.Empty; - var assetsNameHash = new HashSet(); + var assetsNameHash = new HashSet(StringComparer.OrdinalIgnoreCase); var progressCount = assetsManager.assetsFileList.Sum(x => x.Objects.Count); int j = 0; Progress.Reset(); @@ -186,7 +186,7 @@ namespace AssetStudioGUI } assetItem.SubItems.AddRange(new[] { assetItem.TypeString, assetItem.FullSize.ToString() }); //处理同名文件 - if (!assetsNameHash.Add((assetItem.TypeString + assetItem.Text).ToUpper())) + if (!assetsNameHash.Add(assetItem.TypeString + assetItem.Text)) { assetItem.Text += assetItem.UniqueID; } @@ -217,7 +217,7 @@ namespace AssetStudioGUI } item.Text = Path.GetDirectoryName(originalPath) + "\\" + Path.GetFileNameWithoutExtension(originalPath); - if (!assetsNameHash.Add((item.TypeString + item.Text).ToUpper())) + if (!assetsNameHash.Add(item.TypeString + item.Text)) { item.Text += item.UniqueID; }