public override void ReadBinary(ESPReader reader) { List <string> readTags = new List <string>(); while (reader.BaseStream.Position < reader.BaseStream.Length) { string subTag = reader.PeekTag(); switch (subTag) { case "RDAT": if (readTags.Contains("RDAT")) { return; } Header.ReadBinary(reader); break; case "RDOT": if (readTags.Contains("RDOT")) { return; } if (ObjectList == null) { ObjectList = new RegionObjectList(); } ObjectList.ReadBinary(reader); break; case "RDMP": if (readTags.Contains("RDMP")) { return; } if (MapName == null) { MapName = new SimpleSubrecord <String>(); } MapName.ReadBinary(reader); break; case "RDGS": if (readTags.Contains("RDGS")) { return; } if (GrassList == null) { GrassList = new RegionGrassList(); } GrassList.ReadBinary(reader); break; case "RDMD": if (readTags.Contains("RDMD")) { return; } if (MusicType == null) { MusicType = new SimpleSubrecord <RegionMusicType>(); } MusicType.ReadBinary(reader); break; case "RDMO": if (readTags.Contains("RDMO")) { return; } if (Music == null) { Music = new RecordReference(); } Music.ReadBinary(reader); break; case "RDSI": if (readTags.Contains("RDSI")) { return; } if (IncidentalMediaSet == null) { IncidentalMediaSet = new RecordReference(); } IncidentalMediaSet.ReadBinary(reader); break; case "RDSB": if (BattleMediaSets == null) { BattleMediaSets = new List <RecordReference>(); } RecordReference tempRDSB = new RecordReference(); tempRDSB.ReadBinary(reader); BattleMediaSets.Add(tempRDSB); break; case "RDSD": if (readTags.Contains("RDSD")) { return; } if (Sounds == null) { Sounds = new RegionSoundList(); } Sounds.ReadBinary(reader); break; case "RDWT": if (readTags.Contains("RDWT")) { return; } if (Weathers == null) { Weathers = new WeatherList(); } Weathers.ReadBinary(reader); break; case "RDID": if (readTags.Contains("RDID")) { return; } if (Imposters == null) { Imposters = new FormArray(); } Imposters.ReadBinary(reader); break; default: return; } readTags.Add(subTag); } }
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 "WLST": if (Weathers == null) { Weathers = new WeatherList(); } Weathers.ReadBinary(reader); break; case "FNAM": if (SunTexture == null) { SunTexture = new SimpleSubrecord <String>(); } SunTexture.ReadBinary(reader); break; case "GNAM": if (SunGlareTexture == null) { SunGlareTexture = new SimpleSubrecord <String>(); } SunGlareTexture.ReadBinary(reader); break; case "MODL": if (Model == null) { Model = new Model(); } Model.ReadBinary(reader); break; case "TNAM": if (Timing == null) { Timing = new ClimateTiming(); } Timing.ReadBinary(reader); break; default: throw new Exception(); } } }