private ImageArchive(Stream stream) { _stream = stream; var reader = new BinaryReader(stream); Version = new String(reader.ReadChars(4)); EntryCount = reader.ReadUInt32(); _entries = new List<ImageArchiveEntry>(); _fileDict = new Dictionary<string, ImageArchiveEntry>(StringComparer.InvariantCultureIgnoreCase); _extDict = new Dictionary<string, List<string>>(StringComparer.InvariantCultureIgnoreCase); for (var i = 0; i < EntryCount; ++i) { var entry = new ImageArchiveEntry(reader); _entries.Add(entry); _fileDict.Add(entry.Name, entry); var ext = Path.GetExtension(entry.Name); if (ext == null) continue; if (!_extDict.ContainsKey(ext)) { _extDict.Add(ext, new List<string>()); } _extDict[ext].Add(entry.Name); } }
private ImageArchive(Stream stream) { _stream = stream; var reader = new BinaryReader(stream); Version = new String(reader.ReadChars(4)); EntryCount = reader.ReadUInt32(); _entries = new List <ImageArchiveEntry>(); _fileDict = new Dictionary <string, ImageArchiveEntry>(StringComparer.InvariantCultureIgnoreCase); _extDict = new Dictionary <string, List <string> >(StringComparer.InvariantCultureIgnoreCase); for (var i = 0; i < EntryCount; ++i) { var entry = new ImageArchiveEntry(reader); _entries.Add(entry); _fileDict.Add(entry.Name, entry); var ext = Path.GetExtension(entry.Name); if (ext == null) { continue; } if (!_extDict.ContainsKey(ext)) { _extDict.Add(ext, new List <string>()); } _extDict[ext].Add(entry.Name); } }
public FramedStream ReadFile(String name) { ImageArchiveEntry entry = myFileDict[name]; FramedStream stream = new FramedStream(myStream); stream.PushFrame(entry.Offset, entry.Size); return(stream); }
private ImageArchive(Stream stream) { _stream = stream; var fileStream = _stream as FileStream; string archiveName = fileStream != null?Path.GetFileName(fileStream.Name) : string.Empty; long archiveSize = fileStream?.Length ?? 0; var reader = new BinaryReader(stream); Version = new String(reader.ReadChars(4)); EntryCount = reader.ReadUInt32(); _entries = new List <ImageArchiveEntry>(); _fileDict = new Dictionary <string, ImageArchiveEntry>(StringComparer.InvariantCultureIgnoreCase); _extDict = new Dictionary <string, List <string> >(StringComparer.InvariantCultureIgnoreCase); if (Version != "VER2") { UnityEngine.Debug.LogWarning($"Archive {archiveName} has unsupported version {Version}, entry count {EntryCount}, size {archiveSize}"); return; } for (var i = 0; i < EntryCount; ++i) { var entry = new ImageArchiveEntry(reader); if (_fileDict.ContainsKey(entry.Name)) { UnityEngine.Debug.LogWarning($"file entry (name: {entry.Name}, size: {entry.Size}) already exists in archive {archiveName}"); continue; } _entries.Add(entry); _fileDict.Add(entry.Name, entry); var ext = Path.GetExtension(entry.Name); if (ext == null) { UnityEngine.Debug.LogWarning("No file extension for: \"" + entry.Name + "\""); continue; } if (!_extDict.ContainsKey(ext)) { _extDict.Add(ext, new List <string>()); } _extDict[ext].Add(entry.Name); } }
public ImageArchive(Stream stream) { myStream = stream; BinaryReader reader = new BinaryReader(stream); Version = new String(reader.ReadChars(4)); Length = reader.ReadUInt32(); myFileDict = new Dictionary <string, ImageArchiveEntry>(); for (int i = 0; i < Length; ++i) { ImageArchiveEntry entry = new ImageArchiveEntry(stream); myFileDict.Add(entry.Name, entry); } List <String> keys = new List <string>(); keys.AddRange(myFileDict.Keys.Where(x => x.EndsWith(".txd") && x.Contains("wat"))); }
private ImageArchive(Stream stream) { _stream = stream; var reader = new BinaryReader(stream); Version = new String(reader.ReadChars(4)); EntryCount = reader.ReadUInt32(); _entries = new List <ImageArchiveEntry>(); _fileDict = new Dictionary <string, ImageArchiveEntry>(StringComparer.InvariantCultureIgnoreCase); _extDict = new Dictionary <string, List <string> >(StringComparer.InvariantCultureIgnoreCase); for (var i = 0; i < EntryCount; ++i) { var entry = new ImageArchiveEntry(reader); _entries.Add(entry); _fileDict.Add(entry.Name, entry); //UnityEngine.Debug.Log ("Adding image archive entry: " + entry.Name); var ext = Path.GetExtension(entry.Name); if (ext == null) { UnityEngine.Debug.LogWarning("No file extension for: \"" + entry.Name + "\""); continue; } if (!_extDict.ContainsKey(ext)) { _extDict.Add(ext, new List <string>()); UnityEngine.Debug.Log("New image archive extension: \"" + ext + "\" for: \"" + entry.Name + "\""); } _extDict[ext].Add(entry.Name); } }