IEnumerable <string> GetPathList(BinaryReader reader, RiotArchiveHeader header) { var stream = reader.BaseStream; stream.Seek(header.PathListOffset, SeekOrigin.Begin); var pathListInfo = reader.ReadStruct <RiotPathListHeader>(); var stringOffsets = GetStringOffsets(reader, (int)pathListInfo.Length).ToArray(); foreach (var offset in stringOffsets) { stream.Seek(header.PathListOffset + offset.Offset, SeekOrigin.Begin); yield return(BinaryReaderTools.GetStaticLengthString(reader, (int)offset.Length)); } }
IEnumerable <RiotArchiveFile> GetFiles(BinaryReader reader, RiotArchiveHeader header, string[] paths) { var stream = reader.BaseStream; stream.Seek(header.FilesOffset, SeekOrigin.Begin); var fileListInfo = reader.ReadStruct <RiotFileListHeader>(); for (int i = 0; i < fileListInfo.Length; i++) { var fileInfo = reader.ReadStruct <RiotFileListEntry>(); yield return(new RiotArchiveFile(this.FullName, paths[fileInfo.PathListIndex], (int)fileInfo.DataOffset, (int)fileInfo.DataLength)); #if DEBUG Debug.Assert(new RiotArchiveFile(paths[fileInfo.PathListIndex]).Hash == fileInfo.Hash); #endif } }
IEnumerable<string> GetPathList(BinaryReader reader, RiotArchiveHeader header) { var stream = reader.BaseStream; stream.Seek(header.PathListOffset, SeekOrigin.Begin); var pathListInfo = reader.ReadStruct<RiotPathListHeader>(); var stringOffsets = GetStringOffsets(reader, (int)pathListInfo.Length).ToArray(); foreach (var offset in stringOffsets) { stream.Seek(header.PathListOffset + offset.Offset, SeekOrigin.Begin); yield return BinaryReaderTools.GetStaticLengthString(reader, (int)offset.Length); } }
IEnumerable<RiotArchiveFile> GetFiles(BinaryReader reader, RiotArchiveHeader header, string[] paths) { var stream = reader.BaseStream; stream.Seek(header.FilesOffset, SeekOrigin.Begin); var fileListInfo = reader.ReadStruct<RiotFileListHeader>(); for (int i = 0; i < fileListInfo.Length; i++) { var fileInfo = reader.ReadStruct<RiotFileListEntry>(); yield return new RiotArchiveFile(this.FullName, paths[fileInfo.PathListIndex], (int)fileInfo.DataOffset, (int)fileInfo.DataLength); #if DEBUG Debug.Assert(new RiotArchiveFile(paths[fileInfo.PathListIndex]).Hash == fileInfo.Hash); #endif } }