public override bool Unload() { Il2CppTypeRegistry.Unload(); PatchBase.UnpatchAll(); return(base.Unload()); }
public override void Load() { Il2CppTypeRegistry.Load(); Il2CppTypeRegistry.Register <CoroutineHandler>(); Il2CppTypeRegistry.Register <LightController>(); log = Log; harmony = new Harmony(GUID); try { var assembly = Assembly.GetExecutingAssembly(); var types = assembly.GetTypes(); var patchType = typeof(PatchBase); foreach (Type type in types) { if (patchType.IsAssignableFrom(type) && !type.IsAbstract) { var constructor = type.GetConstructor(new Type[] { typeof(Harmony) }); if (constructor != null) { try { constructor.Invoke(new object[] { harmony }); Log.LogInfo($"Created instance of patch '{type.FullName}'"); } catch (Exception e) { Log.LogError($"Failed to create instance of Patch type '{type.FullName}'\nException: {e}"); } } else { Log.LogWarning($"Skipping '{type.FullName}' as it doesn't have a proper harmony constructor"); } } } } catch (Exception e) { Log.LogError("Failed getting patches: " + e.StackTrace); } PatchBase.PatchAll(); }