public override IElement Load(BinaryReader reader, IList <DirectoryEntry> entries) { // Create the map. DoomFormatMapElement map = new DoomFormatMapElement(entries[0].Name); // Iterate through the remaining entries and construct appropriate // data for each one. foreach (DirectoryEntry entry in entries) { // Set the reader's position. reader.BaseStream.Position = entry.Offset; // Load the data into the map. switch (entry.Name) { case "THINGS": map.Things = LoadThings(reader, entry); break; case "LINEDEFS": map.Lines = LoadLines(reader, entry); break; case "SIDEDEFS": map.Sides = LoadSides(reader, entry); break; case "VERTEXES": map.Vertexes = LoadVertexes(reader, entry); break; case "SEGS": map.Segments = reader.ReadBytes(entry.Size); break; case "SSECTORS": map.SubSectors = reader.ReadBytes(entry.Size); break; case "NODES": map.Nodes = reader.ReadBytes(entry.Size); break; case "SECTORS": map.Sectors = LoadSectors(reader, entry); break; case "REJECT": map.RejectTable = reader.ReadBytes(entry.Size); break; case "BLOCKMAP": map.Blockmap = reader.ReadBytes(entry.Size); break; } } // Return the complete map. return(map); }
public void A_Wad_Has_The_Correct_Number_Of_Things() { WadLoader loader = new WadLoader(); WadFile wad = loader.Load(@"TestData\testmap.wad"); DoomFormatMapElement map = (DoomFormatMapElement)wad.Elements[0]; Assert.AreEqual(28, map.Things.Count); }