LogicAndTrick / sledge-formats

C# parsers and formats for Half-Life 1 and related engines.
MIT License
71 stars 10 forks source link

Wad file lumps should have a default constructor #9

Closed SamVanheer closed 1 year ago

SamVanheer commented 1 year ago

Wad file lumps currently do not allow default construction: https://github.com/LogicAndTrick/sledge-formats/blob/b9b5f956a694a5faa9a307afb364c090573c2d05/Sledge.Formats.Texture/Wad/Lumps/MipTextureLump.cs

When creating new wad files this requires the lumps to be re-implemented to support this:

internal sealed class JobMipTextureLump : MipTexture, ILump
{
    public LumpType Type => LumpType.MipTexture;

    public int Write(BinaryWriter bw)
    {
        var pos = bw.BaseStream.Position;
        Write(bw, true, this);
        return (int)(bw.BaseStream.Position - pos);
    }
}
 WadFile wadFile = new(WadVersion.Wad3);

 foreach (var texture in bspFile.Textures.Where(t => t.NumMips > 0))
 {
     JobMipTextureLump lump = new()
     {
         Name = texture.Name,
         Width = texture.Width,
         Height = texture.Height,
         NumMips = texture.NumMips,
         MipData = texture.MipData,
         Palette = texture.Palette
     };

     wadFile.AddLump(texture.Name, lump);
 }

 using var stream = File.Open(wadFileName, FileMode.Create);

 wadFile.Write(stream);

Adding a public default constructor to the lumps should suffice.