private static int Initialize() { AppDomain curDomain = AppDomain.CurrentDomain; Fixes.UnhandledException.Install(curDomain); MelonUtils.Setup(curDomain); Assertions.LemonAssertMapping.Setup(); if (!MonoLibrary.Setup() || !MonoResolveManager.Setup()) { return(1); } HarmonyInstance = new HarmonyLib.Harmony(BuildInfo.Name); Fixes.ForcedCultureInfo.Install(); Fixes.InstancePatchFix.Install(); Fixes.ProcessFix.Install(); PatchShield.Install(); MelonPreferences.Load(); MelonLaunchOptions.Load(); bHaptics.Load(); MelonCompatibilityLayer.Setup(); MelonCompatibilityLayer.SetupModules(MelonCompatibilityLayer.SetupType.OnPreInitialization); MelonHandler.LoadPlugins(); MelonHandler.OnPreInitialization(); return(0); }
internal static int Initialize(ConfigFile configFile) { AppDomain curDomain = AppDomain.CurrentDomain; HarmonyInstance = new HarmonyLib.Harmony(BuildInfo.Name); if (MelonLaunchOptions.Core.EnableFixes) { Fixes.UnhandledException.Run(curDomain); Fixes.InvariantCurrentCulture.Install(); } try { MelonUtils.Setup(); } catch (Exception ex) { MelonLogger.Error($"MelonUtils.Setup Exception: {ex}"); throw; } if (MelonLaunchOptions.Core.EnableFixes) { Fixes.ApplicationBase.Run(curDomain); Fixes.ExtraCleanup.Run(); } MelonPreferences.Load(); MelonLaunchOptions.Load(configFile); if (MelonLaunchOptions.Core.EnableCompatibilityLayers) { MelonCompatibilityLayer.Setup(); } if (MelonLaunchOptions.Core.EnablePatchShield) { PatchShield.Install(); } if (MelonLaunchOptions.Core.EnableBHapticsIntegration) { bHaptics.Load(); } if (MelonLaunchOptions.Core.EnableCompatibilityLayers) { MelonCompatibilityLayer.SetupModules(MelonCompatibilityLayer.SetupType.OnPreInitialization); } MelonHandler.LoadPlugins(); MelonHandler.OnPreInitialization(); return(0); }
static Core() { AppDomain curDomain = AppDomain.CurrentDomain; HarmonyInstance = new HarmonyLib.Harmony(BuildInfo.Name); Fixes.UnhandledException.Run(curDomain); Fixes.InvariantCurrentCulture.Install(); try { MelonUtils.Setup(); } catch (Exception ex) { MelonLogger.Error("MelonUtils.Setup Exception: " + ex.ToString()); throw ex; } Fixes.ApplicationBase.Run(curDomain); Fixes.ExtraCleanup.Run(); MelonPreferences.Load(); MelonLaunchOptions.Load(); MelonCompatibilityLayer.Setup(curDomain); //PatchShield.Install(); }
static Core() { try { MelonUtils.Setup(); } catch (Exception ex) { MelonLogger.Error("MelonUtils.Setup Exception: " + ex.ToString()); throw ex; } Harmony.HarmonyInstance harmonyInstance = Harmony.HarmonyInstance.Create("MelonLoader"); try { harmonyInstance.Patch(typeof(Thread).GetProperty("CurrentCulture", BindingFlags.Public | BindingFlags.Instance).GetGetMethod(), new Harmony.HarmonyMethod(typeof(Core).GetMethod("GetCurrentCulturePrefix", BindingFlags.NonPublic | BindingFlags.Static))); } catch (Exception ex) { MelonLogger.Warning("Thread.CurrentCulture Exception: " + ex.ToString()); } try { harmonyInstance.Patch(typeof(Thread).GetProperty("CurrentUICulture", BindingFlags.Public | BindingFlags.Instance).GetGetMethod(), new Harmony.HarmonyMethod(typeof(Core).GetMethod("GetCurrentCulturePrefix", BindingFlags.NonPublic | BindingFlags.Static))); } catch (Exception ex) { MelonLogger.Warning("Thread.CurrentUICulture Exception: " + ex.ToString()); } try { ((AppDomainSetup)typeof(AppDomain).GetProperty("SetupInformationNoCopy", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(AppDomain.CurrentDomain, new object[0])).ApplicationBase = MelonUtils.GameDirectory; } catch (Exception ex) { MelonLogger.Warning("AppDomainSetup.ApplicationBase Exception: " + ex.ToString()); } Directory.SetCurrentDirectory(MelonUtils.GameDirectory); AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveHandler; AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += AssemblyResolveHandler; try { MelonPreferences.LegacyCheck(); } catch (Exception ex) { MelonLogger.Error("MelonPreferences.LegacyCheck Exception: " + ex.ToString()); MelonPreferences.WasError = true; } try { MelonPreferences.Load_Internal(); } catch (Exception ex) { MelonLogger.Error("MelonPreferences.Load_Internal Exception: " + ex.ToString()); MelonPreferences.WasError = true; } if (MelonPreferences.WasLegacyLoaded) { try { MelonPreferences.Save_Internal(); } catch (Exception ex) { MelonLogger.Error("MelonPreferences.Save_Internal Exception: " + ex.ToString()); MelonPreferences.WasError = true; } } MelonPreferences.SaveAfterEntryCreation = true; try { bHaptics_NativeLibrary.Load(); } catch (Exception ex) { MelonLogger.Error("bHaptics_NativeLibrary.Load Exception: " + ex.ToString()); bHaptics.WasError = true; } }