internal Archive(AssetLoader loader)
: base(loader)
{
BinaryReader reader = Reader = loader.Reader;
loader.Position = loader.Length - 12;
reader.Require(Magic);
int namesSize = reader.ReadInt32(); // Number of bytes of the headerSize that are record names, sometimes (always?) plus a few bytes.
int headersSize = reader.ReadInt32();
reader.BaseStream.Position = loader.Length - headersSize;
int count = reader.ReadInt32();
for (int index = 0; index < count; index++) {
int nameLength = reader.ReadInt32();
string name = reader.ReadString(nameLength - 1, Encoding.ASCII);
reader.Require((byte)0);
int id = reader.ReadInt32();
ArchiveRecordMode mode = (ArchiveRecordMode)reader.ReadInt32();
int size = reader.ReadInt32();
int sizeCompressed = reader.ReadInt32();
uint offset = reader.ReadUInt32();
if (mode != ArchiveRecordMode.Directory)
new ArchiveRecord(this, name, id, mode, size, sizeCompressed, offset);
}
}