internal Module(AssetLoader loader) : base(loader) { loader.Progress = 0; Reader = loader.Reader; var tes4Record = new RecordHeader(Reader); tes4Record.RequireType("TES4"); using (RecordReader reader = tes4Record.OpenReader(Reader)) { while (reader.ReadField()) { switch (reader.Field.Type) { case "HEDR": reader.RequireFieldSize(12); Version = reader.ReadSingle(); RecordCount = reader.ReadInt32(); NextAvailableObjectId = reader.ReadFormId(); break; case "CNAM": Author = reader.ReadStringBody(); break; case "SNAM": Description = reader.ReadStringBody(); break; case "MAST": MastersMutable.Add(reader.ReadStringBody()); break; case "DATA": // File size of a MAST - always 0, probably vestigial. long fileSize = reader.ReadInt64OrInt32Body(); if (fileSize != 0) { throw new InvalidDataException(); } break; case "ONAM": OverridesMutable.Capacity = reader.Field.Size / 4; for (int index = 0, count = reader.Field.Size / 4; index < count; index++) { OverridesMutable.Add(reader.ReadFormId()); } break; case "INTV": InternalVersion = reader.ReadInt32Body(); break; case "INCC": InternalCC = reader.ReadInt32Body(); break; default: throw reader.UnknownFieldException(); } } } while (!loader.AtEnd) { loader.SetProgressToPosition(); AddChild(Group.ReadGroup(this)); } }