Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using Harmony;
- using Verse;
- namespace ZPatches
- {
- [HarmonyPatch (typeof (ModContentPack))]
- [HarmonyPatch ("LoadDefs")]
- [HarmonyPatch (new Type [] { typeof (IEnumerable<PatchOperation>) })]
- public static class ModContentPack_Patch
- {
- static FieldInfo defPackagesField = AccessTools.Field (typeof (ModContentPack), "defPackages");
- public static bool Prefix (ModContentPack __instance, IEnumerable<PatchOperation> patches)
- {
- DeepProfiler.Start ("Loading all defs");
- List<LoadableXmlAsset> list = DirectXmlLoader.XmlAssetsInModFolder (__instance, "Defs/").ToList<LoadableXmlAsset> ();
- foreach (LoadableXmlAsset current in list) {
- foreach (PatchOperation current2 in patches) {
- current2.Apply (current.xmlDoc);
- }
- }
- DumpXML (list);
- for (int i = 0; i < list.Count; i++) {
- XmlInheritance.TryRegisterAllFrom (list [i], __instance);
- }
- XmlInheritance.Resolve ();
- for (int j = 0; j < list.Count; j++) {
- string relFolder = GenFilePaths.FolderPathRelativeToDefsFolder (list [j].fullFolderPath, __instance);
- DefPackage defPackage = new DefPackage (list [j].name, relFolder);
- foreach (Def current3 in DirectXmlLoader.AllDefsFromAsset (list [j])) {
- defPackage.defs.Add (current3);
- }
- var defPackages = defPackagesField.GetValue (__instance) as List<DefPackage>;
- defPackages.Add (defPackage);
- }
- DeepProfiler.End ();
- return false;
- }
- public static void DumpXML(List<LoadableXmlAsset> list) {
- Log.Message ("> " + list.Count);
- foreach (var asset in list) {
- Log.Message ("\t" + asset.name);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement