示例#1
0
 public Wad(string path)
 {
     using (var stream = new FileStream(path, FileMode.Open))
     {
         byte[] headerBlock = stream.ReadExact(4);
         Type = TypeFromBytes(headerBlock);
         int lumpCount       = stream.ReadInt32();
         int infoTableOffset = stream.ReadInt32();
         stream.Seek(infoTableOffset, SeekOrigin.Begin);
         var entries = new DirEntry[lumpCount];
         for (int i = 0; i < lumpCount; ++i)
         {
             entries[i].Address = stream.ReadInt32();
             entries[i].Size    = stream.ReadInt32();
             entries[i].Name    = stream.ReadCString(8);
         }
         mLumps = new List <Lump>(lumpCount);
         foreach (var entry in entries)
         {
             stream.Seek(entry.Address, SeekOrigin.Begin);
             mLumps.Add(new Lump(entry.Name, stream.ReadExact(entry.Size)));
         }
     }
 }
示例#2
0
 /// <summary>
 /// Constructor for a WAD.
 /// </summary>
 /// <param name="type">The WAD's type.</param>
 public Wad(WadType type)
 {
     this.Type  = type;
     this.Lumps = new List <Lump>();
 }
示例#3
0
 /// <summary>
 /// Constructor for a WAD.
 /// </summary>
 /// <param name="type">The type of WAD.</param>
 public WadFile(WadType type)
 {
     Type     = type;
     Elements = new List <IElement>();
 }
示例#4
0
 public WadHeader(WadType type, uint directoriesCount, uint firstDirectoryOffset)
 {
     Type                 = type;
     DirectoriesCount     = directoriesCount;
     FirstDirectoryOffset = firstDirectoryOffset;
 }
示例#5
0
 public WadHeader(WadType type, uint directories, uint direactoryStart)
 {
     Type             = type;
     Directories      = directories;
     DirectoryPointer = direactoryStart;
 }