internal static void InstallPythonModBootstrapper() { tracker = ModClassCreationTracker.Create(typeof(PythonLoaderMod)); tracker.ModDoneCreating += delegate(object sender, ModClassCreationTracker.ModDoneCreatingEventArgs e) { if (Directory.Exists(Path.Combine(e.mod.RootDir, "Python/"))) { PythonAssembly.GetType("Python.PythonModManager").GetMethod("PopulateWithNewMod", BindingFlags.Public | BindingFlags.Static) .Invoke(null, new object[] { e.mod }); } }; }
public static ModClassCreationTracker Create(Type detectType = null) { if (!didStaticSetup) { //static setup runningModClasses = (Dictionary <Type, Verse.Mod>) typeof(LoadedModManager).InvokeMember("runningModClasses", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Static, null, null, null); DoHarmonyPatching(); didStaticSetup = true; } var inst = new ModClassCreationTracker(detectType); instances.Add(new WeakReference <ModClassCreationTracker>(inst)); return(inst); }