Example #1
0
 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 });
         }
     };
 }
Example #2
0
        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);
        }