Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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
            }
        }