internal static int Start() { if (!SupportModule.Initialize()) { return(1); } AddUnityDebugLog(); if (MelonLaunchOptions.Core.EnableBHapticsIntegration) { bHaptics.Start(); } if (MelonLaunchOptions.Core.EnableCompatibilityLayers) { MelonCompatibilityLayer.SetupModules(MelonCompatibilityLayer.SetupType.OnApplicationStart); } MelonHandler.OnApplicationStart_Plugins(); MelonHandler.LoadMods(); MelonHandler.OnApplicationStart_Mods(); MelonHandler.OnApplicationLateStart_Plugins(); MelonHandler.OnApplicationLateStart_Mods(); return(0); }
private static void OnApplicationStart() { if (Imports.IsIl2CppGame()) { Assembly_CSharp = Assembly.Load("Assembly-CSharp"); UnhollowerSupport.Initialize(); } SupportModule.Initialize(); MelonModLogger.Log("------------------------------"); MelonModLogger.Log("Unity " + UnityVersion); MelonModLogger.Log("------------------------------"); MelonModLogger.Log("Name: " + CurrentGameAttribute.GameName); MelonModLogger.Log("Developer: " + CurrentGameAttribute.Developer); MelonModLogger.Log("Type: " + (Imports.IsIl2CppGame() ? "Il2Cpp" : (Imports.IsOldMono() ? "Mono" : "MonoBleedingEdge"))); MelonModLogger.Log("------------------------------"); MelonModLogger.Log("Using v" + BuildInfo.Version + " Open-Beta"); MelonModLogger.Log("------------------------------"); LoadMods(); if (Mods.Count > 0) { for (int i = 0; i < Mods.Count; i++) { MelonMod mod = Mods[i]; if (mod != null) { MelonModLogger.Log(mod.InfoAttribute.Name + (!string.IsNullOrEmpty(mod.InfoAttribute.Version) ? (" v" + mod.InfoAttribute.Version) : "") + (!string.IsNullOrEmpty(mod.InfoAttribute.Author) ? (" by " + mod.InfoAttribute.Author) : "") + (!string.IsNullOrEmpty(mod.InfoAttribute.DownloadLink) ? (" (" + mod.InfoAttribute.DownloadLink + ")") : "") ); if (Imports.IsDebugMode()) { MelonModLogger.Log("Preload: " + mod.IsPreload.ToString()); } MelonModLogger.LogModStatus((mod.GameAttributes.Any()) ? (mod.IsUniversal ? 0 : 1) : 2); MelonModLogger.Log("------------------------------"); } } for (int i = 0; i < Mods.Count; i++) { MelonMod mod = Mods[i]; if (mod != null) { try { mod.OnApplicationStart(); } catch (Exception ex) { MelonModLogger.LogModError(ex.ToString(), mod.InfoAttribute.Name); } } } } else { MelonModLogger.Log("No Mods Loaded!"); MelonModLogger.Log("------------------------------"); } }
private static void Start() { if (!SupportModule.Initialize()) { return; } AddUnityDebugLog(); try { bHaptics.Start(); } catch (Exception ex) { MelonLogger.Error("bHaptics.Start Exception: " + ex.ToString()); bHaptics.WasError = true; } MelonHandler.OnApplicationStart_Plugins(); MelonHandler.LoadMods(); Main.LegacySupport(); MelonHandler.OnApplicationStart_Mods(); }
private static int Start() { if (!SupportModule.Setup()) { return(1); } AddUnityDebugLog(); bHaptics.Start(); MelonCompatibilityLayer.SetupModules(MelonCompatibilityLayer.SetupType.OnApplicationStart); MelonHandler.OnApplicationStart_Plugins(); MelonHandler.LoadMods(); MelonStartScreen.DisplayModLoadIssuesIfNeeded(); MelonHandler.OnApplicationStart_Mods(); return(0); }
private static int Start() { if (!SupportModule.Initialize()) { return(1); } AddUnityDebugLog(); bHaptics.Start(); MelonHandler.OnApplicationStart_Plugins(); MelonHandler.LoadMods(); MelonHandler.OnApplicationStart_Mods(); MelonHandler.OnApplicationLateStart_Plugins(); MelonHandler.OnApplicationLateStart_Mods(); return(0); }
private static int Start() { bHaptics.Start(); MelonHandler.OnApplicationStart_Plugins(); MelonHandler.LoadMods(); MelonHandler.OnPreSupportModule(); if (!SupportModule.Setup()) { return(1); } if (MelonUtils.IsGameIl2Cpp()) { HarmonyLib.Public.Patching.PatchManager.ResolvePatcher += HarmonyIl2CppMethodPatcher.TryResolve; } MelonCompatibilityLayer.SetupModules(MelonCompatibilityLayer.SetupType.OnApplicationStart); AddUnityDebugLog(); MelonHandler.OnApplicationStart_Mods(); //MelonStartScreen.DisplayModLoadIssuesIfNeeded(); return(0); }
private static void OnApplicationStart() { if (!HasGeneratedAssembly) { return; } if (Imports.IsIl2CppGame()) { if (IsVRChat) { Assembly_CSharp = Assembly.Load("Assembly-CSharp"); } UnhollowerSupport.Initialize(); } SupportModule.Initialize(); MelonModLogger.Log("------------------------------"); MelonModLogger.Log("Unity " + UnityVersion); MelonModLogger.Log("------------------------------"); MelonModLogger.Log("Name: " + CurrentGameAttribute.GameName); MelonModLogger.Log("Developer: " + CurrentGameAttribute.Developer); MelonModLogger.Log("Type: " + (Imports.IsIl2CppGame() ? "Il2Cpp" : (Imports.IsOldMono() ? "Mono" : "MonoBleedingEdge"))); MelonModLogger.Log("------------------------------"); MelonModLogger.Log("Using v" + BuildInfo.Version + " Open-Beta"); MelonModLogger.Log("------------------------------"); LoadDLLs(); if (Plugins.Count > 0) { for (int i = 0; i < Plugins.Count; i++) { MelonPlugin plugin = Plugins[i]; if (plugin != null) { MelonModLogger.Log(plugin.InfoAttribute.Name + (!string.IsNullOrEmpty(plugin.InfoAttribute.Version) ? (" v" + plugin.InfoAttribute.Version) : "") + (!string.IsNullOrEmpty(plugin.InfoAttribute.Author) ? (" by " + plugin.InfoAttribute.Author) : "") + (!string.IsNullOrEmpty(plugin.InfoAttribute.DownloadLink) ? (" (" + plugin.InfoAttribute.DownloadLink + ")") : "") ); MelonModLogger.LogDLLStatus(plugin.Compatibility); MelonModLogger.Log("------------------------------"); } } Plugins = TempPlugins; } if (Plugins.Count <= 0) { MelonModLogger.Log("No Plugins Loaded!"); MelonModLogger.Log("------------------------------"); } if (Mods.Count > 0) { for (int i = 0; i < Mods.Count; i++) { MelonMod mod = Mods[i]; if (mod != null) { MelonModLogger.Log(mod.InfoAttribute.Name + (!string.IsNullOrEmpty(mod.InfoAttribute.Version) ? (" v" + mod.InfoAttribute.Version) : "") + (!string.IsNullOrEmpty(mod.InfoAttribute.Author) ? (" by " + mod.InfoAttribute.Author) : "") + (!string.IsNullOrEmpty(mod.InfoAttribute.DownloadLink) ? (" (" + mod.InfoAttribute.DownloadLink + ")") : "") ); MelonModLogger.LogDLLStatus(mod.Compatibility); MelonModLogger.Log("------------------------------"); } } Mods.RemoveAll((MelonMod mod) => (mod.Compatibility >= MelonBase.MelonCompatibility.INCOMPATIBLE)); DependencyGraph <MelonMod> .TopologicalSort(Mods, mod => mod.InfoAttribute.Name); } if (Mods.Count <= 0) { MelonModLogger.Log("No Mods Loaded!"); MelonModLogger.Log("------------------------------"); } if ((Plugins.Count > 0) || (Mods.Count > 0)) { AddUnityDebugLog(); } if (Plugins.Count > 0) { HashSet <MelonPlugin> failedPlugins = new HashSet <MelonPlugin>(); for (int i = 0; i < Plugins.Count; i++) { MelonPlugin plugin = Plugins[i]; if (plugin != null) { try { InitializeModOrPlugin(plugin); } catch (Exception ex) { MelonModLogger.LogDLLError(ex.ToString(), plugin.InfoAttribute.Name); failedPlugins.Add(plugin); } } } Plugins.RemoveAll(plugin => failedPlugins.Contains(plugin)); } if (Mods.Count > 0) { HashSet <MelonMod> failedMods = new HashSet <MelonMod>(); for (int i = 0; i < Mods.Count; i++) { MelonMod mod = Mods[i]; if (mod != null) { try { InitializeModOrPlugin(mod); } catch (Exception ex) { MelonModLogger.LogDLLError(ex.ToString(), mod.InfoAttribute.Name); failedMods.Add(mod); } } } Mods.RemoveAll(mod => failedMods.Contains(mod)); } if ((Plugins.Count <= 0) && (Mods.Count <= 0)) { SupportModule.Destroy(); } }
private static void AddUnityDebugLog() { SupportModule.UnityDebugLog("--------------------------------------------------------------------------------------------------"); SupportModule.UnityDebugLog("~ This Game has been MODIFIED using MelonLoader. DO NOT report any issues to the Developers! ~"); SupportModule.UnityDebugLog("--------------------------------------------------------------------------------------------------"); }