Ejemplo n.º 1
0
 private static byte[] ReadLumpsBytes(BinaryReader reader, WadHeader header)
 {
     reader.BaseStream.Seek(HeaderSizeInBytes, SeekOrigin.Begin);
     return(reader.ReadBytes((int)(header.FirstDirectoryOffset - HeaderSizeInBytes)));
 }
Ejemplo n.º 2
0
 private Wad3File()
 {
     _header = new WadHeader();
 }
Ejemplo n.º 3
0
        private static IReadOnlyList <WadDirectory> ReadDirectories(BinaryReader reader, WadHeader header)
        {
            reader.BaseStream.Seek(header.FirstDirectoryOffset, SeekOrigin.Begin);

            var         directories = new WadDirectory[header.DirectoriesCount];
            Span <char> nameSpan    = stackalloc char[LumpNameSizeInBytes];

            for (var i = 0; i < header.DirectoriesCount; i++)
            {
                var lumpOffset = reader.ReadUInt32() - HeaderSizeInBytes;
                var lumpSize   = reader.ReadUInt32();
                reader.Read(nameSpan);
                var name = string.Intern(new string(nameSpan).TrimEnd('\0'));
                directories[i] = new WadDirectory(lumpOffset, lumpSize, name);
            }
            return(directories);
        }