Editor/Decompiler/Lumps/GameLumpHeader.cs
namespace BspImport.Decompiler.Lumps;

public class GameLumpHeader : BaseLump
{
	public GameLumpHeader( ImportContext context, byte[] data, int version = 0 ) : base( context, data, version ) { }

	protected override void Parse( BinaryReader reader )
	{
		if ( reader.GetLength() < sizeof( int ) )
			return;

		var count = reader.ReadInt32();
		if ( count <= 0 )
			return;

		var gameLumps = new GameLump[count];

		for ( int i = 0; i < count; i++ )
		{
			if ( reader.GetLength() < 16 )
			{
				Log.Warning( $"[BSP] Game lump header truncated after {i} entries." );
				break;
			}

			// each gamelump is 16 bytes
			var lump = reader.ReadBytes( 16 );
			var gameLump = new GameLump( Context, lump );
			gameLumps[i] = gameLump;
		}

		Context.GameLumps = gameLumps;
	}
}