public bool Initialize(Assembly moduleAssembly, bool isDynamicLoad) { var modulesDirectory = Path.Combine(ReadWrite.PATH, "Modules"); var openModDirPath = Path.Combine(modulesDirectory, "OpenMod.Unturned"); if (HasIncompatibleModules(Path.GetFileName(openModDirPath), modulesDirectory)) { return(false); } m_HarmonyInstance = new Harmony(c_HarmonyInstanceId); m_HarmonyInstance.PatchAll(GetType().Assembly); InstallNewtonsoftJson(openModDirPath); if (!isDynamicLoad) { SystemDrawingRedirect.Install(); InstallTlsWorkaround(); InstallAssemblyResolver(); } // ReSharper disable once AssignNullToNotNullAttribute foreach (var file in Directory.GetFiles(openModDirPath)) { if (file.EndsWith(".dll")) { LoadAssembly(openModDirPath, file); } } return(true); }
public void Shutdown() { ServicePointManager.ServerCertificateValidationCallback = m_OldCallBack; SystemDrawingRedirect.Uninstall(); AppDomain.CurrentDomain.AssemblyResolve -= OnAssemblyResolve; m_HarmonyInstance?.UnpatchAll(c_HarmonyInstanceId); }