private async Task AddWithChildren(string file, IItem item, byte[] rawData = null) { var children = new HashSet<string>(); if (Path.GetExtension(file) == ".meta") { // If we're the root file, use the proper get all function // which will throw in the AVFX/ATEX stuff as well. var root = await XivCache.GetFirstRoot(file); if(root != null) { var files = await root.GetAllFiles(); children = files.ToHashSet(); } } else { children = await XivCache.GetChildrenRecursive(file); } foreach (var child in children) { var fe = new FileEntry() { Name = MakeFriendlyFileName(child), Path = child }; if (child == file && rawData != null) { await AddFile(fe, item, rawData); } else { await AddFile(fe, item); } } }
private async Task LoadFiles() { var parentFiles = _entry.MainFiles; var files = new SortedSet <string>(); if (_entry.Level == XivDependencyLevel.Root) { var root = await XivCache.GetFirstRoot(_entry.MainFiles[0]); files = await root.GetAllFiles(); } else { foreach (var file in parentFiles) { var children = await XivCache.GetChildrenRecursive(file); foreach (var child in children) { files.Add(child); } } } _entry.AllFiles.Clear(); foreach (var file in files) { var exists = await AddFile(file); if (exists) { _entry.AllFiles.Add(file); } } UpdateCounts(); ConfirmButton.IsEnabled = true; }