public static void Write() { string buildPath = DataDirectory.GetBuildPath(); Build build = new Build(buildPath); BuildTarget qfBuildTarget = BuildTargetFactory.Construct(BuildTargetFactory.QFName, build); BuildTarget tifBuildTarget = BuildTargetFactory.Construct(BuildTargetFactory.TIFName, build); TES4Collection collection = TES4CollectionFactory.Create(DataDirectory.GetESMDirectoryPath(), DataDirectory.TES4GameFileName);//Needs the "full" collection for SCRO lookups. using (ESMAnalyzer esmAnalyzer = ESMAnalyzer.Load(collection)) { foreach (TES4Record record in collection.Where(r => r.RecordType == TES4RecordType.INFO)) { var scroRecords = esmAnalyzer.GetTypesFromSCROEnumerable(record, null); string[] aliases = scroRecords.Select(r => r.Key).ToArray(); Write(qfBuildTarget, tifBuildTarget, record, null, aliases); } foreach (TES4Record record in collection.GetGrupRecords(TES4RecordType.QUST)) { Dictionary <StageIndexAndLogIndex, List <string> > aliasesDictionary = new Dictionary <StageIndexAndLogIndex, List <string> >(); foreach (var subrecord in record.GetSubrecordsWithStageIndexAndLogIndex("SCRO")) { int formID = subrecord.Item1.Value.FirstFourBytesToInt(); string name = formID == TES5PlayerReference.FormID ? TES5PlayerReference.PlayerRefName : esmAnalyzer.GetEDIDByFormID(formID); aliasesDictionary.AddNewListIfNotContainsKeyAndAddValueToList(subrecord.Item2, name); } foreach (var aliases in aliasesDictionary) { Write(qfBuildTarget, tifBuildTarget, record, aliases.Key, aliases.Value); } } } }
private static void Write(TES4Collection collection, string buildTargetsPath, string scriptFolderName, TES4RecordType recordType, Action <TES4Record, string> writeRecord) { string directory = buildTargetsPath + scriptFolderName + Path.DirectorySeparatorChar + "Source" + Path.DirectorySeparatorChar; Directory.CreateDirectory(directory); var records = recordType == TES4RecordType.INFO ? collection.Where(r => r.RecordType == recordType) : collection.GetGrupRecords(recordType); foreach (TES4Record record in records) { writeRecord(record, directory); } }