private void HandleDefaultSelection(string file, IArchiveReader reader) { IEnumerable <IArchiveEntry> filteredEntries = reader.Entries.Where(x => !string.IsNullOrEmpty(x.Name) && !x.Name.EndsWith(Path.PathSeparator.ToString()) && m_supportedExtensions.Any(y => y.Equals(Path.GetExtension(x.Name), StringComparison.OrdinalIgnoreCase))).OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase).ToList(); if (chkPkContents.Checked) { IEnumerable <IArchiveEntry> pk3Entries = Util.GetEntriesByExtension(reader, Util.GetPkExtenstions()); //should check for MAPINFO (e.g. joyofmapping) foreach (IArchiveEntry entry in pk3Entries) { string extractedFile = Util.ExtractTempFile(m_temp.GetFullPath(), entry); using (IArchiveReader zaInner = ArchiveReader.Create(extractedFile)) { HandleDefaultSelection(extractedFile, zaInner); } } } foreach (IArchiveEntry entry in reader.Entries) { if (!string.IsNullOrEmpty(entry.Name)) { if (m_ct.IsCancellationRequested) { break; } HandleAddItem(file, entry.FullName, entry.Name, filteredEntries.Contains(entry)); } } }
private string GetMaps(ZipArchive za) { IEnumerable <ZipArchiveEntry> txtEntries = GetEntriesByExtension(za, ".txt").Where(x => x.Name.Equals("mapinfo.txt", StringComparison.InvariantCultureIgnoreCase)); if (txtEntries.Any()) { return(MapStringFromMapInfo(txtEntries.First())); } StringBuilder sb = new StringBuilder(); sb.Append(MapStringFromGameFile(za)); IEnumerable <ZipArchiveEntry> pk3Entries = Util.GetEntriesByExtension(za, Util.GetPkExtenstions()); foreach (ZipArchiveEntry zae in pk3Entries) { string extractedFile = Util.ExtractTempFile(TempDirectory.GetFullPath(), zae); using (var extractedZip = ZipFile.OpenRead(extractedFile)) { sb.Append(GetMaps(extractedZip)); } } return(sb.ToString()); }
private string GetMaps(IArchiveReader reader) { var txtEntries = GetEntriesByExtension(reader, ".txt").Where(x => x.Name.Equals("mapinfo.txt", StringComparison.InvariantCultureIgnoreCase)); if (txtEntries.Any()) { return(MapStringFromMapInfo(txtEntries.First())); } StringBuilder sb = new StringBuilder(); sb.Append(MapStringFromGameFile(reader)); IEnumerable <IArchiveEntry> pk3Entries = Util.GetEntriesByExtension(reader, Util.GetReadablePkExtensions()); foreach (IArchiveEntry entry in pk3Entries) { string extractedFile = Util.ExtractTempFile(TempDirectory.GetFullPath(), entry); using (var extractedZip = ArchiveReader.Create(extractedFile)) sb.Append(GetMaps(extractedZip)); } return(sb.ToString()); }