public override void ReadData(ESPReader reader, long dataEnd) { while (reader.BaseStream.Position < dataEnd) { string subTag = reader.PeekTag(); switch (subTag) { case "EDID": if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadBinary(reader); break; case "QSTI": if (AddedQuests == null) { AddedQuests = new List <AddedQuest>(); } AddedQuest tempQSTI = new AddedQuest(); tempQSTI.ReadBinary(reader); AddedQuests.Add(tempQSTI); break; case "QSTR": if (RemovedQuests == null) { RemovedQuests = new List <RecordReference>(); } RecordReference tempQSTR = new RecordReference(); tempQSTR.ReadBinary(reader); RemovedQuests.Add(tempQSTR); break; case "INFC": if (UnusedInfos == null) { UnusedInfos = new List <SharedInfo>(); } SharedInfo tempINFC = new SharedInfo(); tempINFC.ReadBinary(reader); UnusedInfos.Add(tempINFC); break; case "FULL": if (Name == null) { Name = new SimpleSubrecord <String>(); } Name.ReadBinary(reader); break; case "PNAM": if (Priority == null) { Priority = new SimpleSubrecord <Single>(); } Priority.ReadBinary(reader); break; case "TDUM": if (Unknown == null) { Unknown = new SimpleSubrecord <String>(); } Unknown.ReadBinary(reader); break; case "DATA": if (Data == null) { Data = new DialogTopicData(); } Data.ReadBinary(reader); break; default: throw new Exception(); } } }