Alexandria.Games.Arcanum.Archive.Archive C# (CSharp) Method

Archive() private method

private Archive ( AssetLoader loader ) : System
loader Glare.Assets.AssetLoader
return System
        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);
            }
        }
Archive