protected override CASCFolder CreateStorageTree() { var root = new CASCFolder("root"); CountSelect = 0; // Cleanup fake names for unknown files CountUnknown = 0; Logger.WriteLine("HSRootHandler: {0} file names missing for locale {1}", CountUnknown, Locale); return(root); }
protected override CASCFolder CreateStorageTree() { var root = new CASCFolder("root"); // Reset counts CountSelect = 0; UnknownFiles.Clear(); // Create new tree based on specified locale foreach (var rootEntry in RootData) { var rootInfosLocale = rootEntry.Value.Where(re => (re.LocaleFlags & Locale) != 0); if (rootInfosLocale.Count() > 1) { var rootInfosLocaleAndContent = rootInfosLocale.Where(re => (re.ContentFlags == Content)); if (rootInfosLocaleAndContent.Any()) { rootInfosLocale = rootInfosLocaleAndContent; } } if (!rootInfosLocale.Any()) { continue; } string filename; if (!CASCFile.Files.TryGetValue(rootEntry.Key, out CASCFile file)) { filename = "unknown\\" + rootEntry.Key.ToString("X16") + "_" + GetFileDataIdByHash(rootEntry.Key); UnknownFiles.Add(rootEntry.Key); } else { filename = file.FullName; } CreateSubTree(root, rootEntry.Key, filename); CountSelect++; } Logger.WriteLine("WowRootHandler: {0} file names missing for locale {1}", CountUnknown, Locale); return(root); }
public CASCFolder SetFlags(LocaleFlags locale, bool overrideArchive = false, bool createTree = true) { using (var _ = new PerfCounter(GetType().Name + "::SetFlags()")) { Locale = locale; OverrideArchive = overrideArchive; if (createTree) { Root = CreateStorageTree(); } return(Root); } }
public CASCFolder SetFlags(LocaleFlags locale, ContentFlags content, bool createTree = true) { using (var _ = new PerfCounter(GetType().Name + "::SetFlags()")) { Locale = locale; Content = content; if (createTree) { Root = CreateStorageTree(); } return(Root); } }
protected void CreateSubTree(CASCFolder root, ulong filehash, string file) { string[] parts = file.Split(PathDelimiters); CASCFolder folder = root; for (int i = 0; i < parts.Length; ++i) { bool isFile = (i == parts.Length - 1); string entryName = parts[i]; ICASCEntry entry = folder.GetEntry(entryName); if (entry == null) { if (isFile) { if (!CASCFile.Files.ContainsKey(filehash)) { entry = new CASCFile(filehash, file); CASCFile.Files[filehash] = (CASCFile)entry; } else { entry = CASCFile.Files[filehash]; } } else { entry = new CASCFolder(entryName); } folder.Entries[entryName] = entry; } folder = entry as CASCFolder; } }
protected override CASCFolder CreateStorageTree() { var root = new CASCFolder("root"); CountSelect = 0; CountUnknown = 0; foreach (var rootEntry in _rootData) { if ((rootEntry.Value.baseEntry.LocaleFlags & Locale) == 0) { continue; } CreateSubTree(root, rootEntry.Key, CASCFile.Files[rootEntry.Key].FullName); CountSelect++; } Logger.WriteLine("OwRootHandler: {0} file names missing for locale {1}", CountUnknown, Locale); return(root); }
protected override CASCFolder CreateStorageTree() { var root = new CASCFolder("root"); CountSelect = 0; foreach (var entry in RootData) { if ((entry.Value.LocaleFlags & Locale) == 0) { continue; } CreateSubTree(root, entry.Key, CASCFile.Files[entry.Key].FullName); CountSelect++; } // Cleanup fake names for unknown files CountUnknown = 0; Logger.WriteLine("WC3RootHandler: {0} file names missing for locale {1}", CountUnknown, Locale); return(root); }
protected override CASCFolder CreateStorageTree() { var root = new CASCFolder("root"); CountSelect = 0; // Create new tree based on specified locale foreach (var rootEntry in RootData) { var rootInfosLocale = rootEntry.Value.Where(re => (re.LocaleFlags & Locale) != 0); if (!rootInfosLocale.Any()) { continue; } CreateSubTree(root, rootEntry.Key, CASCFile.Files[rootEntry.Key].FullName); CountSelect++; } Logger.WriteLine("D3RootHandler: {0} file names missing extensions for locale {1}", CountUnknown, Locale); return(root); }