/// <summary> /// Performs mod registration when a game level is unloaded. /// </summary> public override void OnLevelUnloading() { base.OnLevelUnloading(); if (patcher == null) { return; } switch (currentloadmode) { case LoadMode.NewGame: case LoadMode.LoadGame: case LoadMode.LoadScenario: case LoadMode.NewGameFromScenario: break; default: var patchedMethods = patcher.Apply(); if (patchedMethods.Count == patches.Length) { PluginManager.instance.eventPluginsChanged += ModsChanged; VehicleManagerCustomizer.Customize(); } else { Log.Error("The 'More Vehicles' mod failed to perform method redirections"); patcher.Revert(); patcher = null; } return; } }
/// <summary>Called when this mod is enabled.</summary> public void OnEnabled() { if (!isWorkshopMode) { Log.Info($"The 'More Vehicles' mod version {modVersion} cannot be started because of no Steam Workshop"); return; } if (Compatibility.AreAnyIncompatibleModsActive()) { Log.Info($"The 'More Vehicles' mod version {modVersion} cannot be started because of incompatible mods"); return; } Log.Info("The 'More Vehicles' mod has been enabled, version: " + modVersion); patcher = new MethodPatcher(HarmonyId, patches); var patchedMethods = patcher.Apply(); if (patchedMethods.Count == patches.Length) { PluginManager.instance.eventPluginsChanged += ModsChanged; VehicleManagerCustomizer.Customize(); } else { Log.Error("The 'More Vehicles' mod failed to perform method redirections"); patcher.Revert(); patcher = null; } }
/// <summary> /// Performs mod registration when a game level is loaded. /// </summary> /// <param name="mode">The mode the game level is loaded in.</param> public override void OnLevelLoaded(LoadMode mode) { currentloadmode = mode; if (patcher == null) { return; } switch (mode) { case LoadMode.NewGame: case LoadMode.LoadGame: case LoadMode.LoadScenario: case LoadMode.NewGameFromScenario: break; default: if (!isWorkshopMode || patcher == null) { return; } PluginManager.instance.eventPluginsChanged -= ModsChanged; patcher.Revert(); patcher = null; VehicleManagerCustomizer.Revert(); Log.Info("The 'More Vehicles' mod has been disabled in Map or Asset editor mod"); return; } var gameMetadata = SimulationManager.instance.m_metaData; if (gameMetadata == null) { return; } lock (gameMetadata) { if (gameMetadata.m_modOverride == null) { gameMetadata.m_modOverride = new Dictionary <string, bool>(); } gameMetadata.m_modOverride[Constants.MetadataModName] = true; } }
/// <summary>Called when this mod is enabled.</summary> public void OnEnabled() { Log.SetupDebug(Name); if (!isWorkshopMode) { Log.Info($"The 'More Vehicles' mod version {modVersion} cannot be started because of no Steam Workshop"); return; } if (Compatibility.AreAnyIncompatibleModsActive()) { Log.Info($"The 'More Vehicles' mod version {modVersion} cannot be started because of incompatible mods"); return; } Log.Info("The 'More Vehicles' mod has been enabled, version: " + modVersion); IPatch[] patches = { CinematicCameraControllerPatch.GetNearestVehicle, CinematicCameraControllerPatch.GetRandomVehicle, CinematicCameraControllerPatch.GetVehicleWithName, OutsideConnectionAIPatch.DummyTrafficProbability, PathVisualizerPatch.AddPathsImpl, ResidentAIPatch.DoRandomMove, TouristAIPatch.DoRandomMove, VehicleManagerPatch.DataDeserialize, VehicleManagerPatch.SimulationStepImpl, VehicleManagerPatch.UpdateData, VehiclePatch.GetTargetFrame, }; patcher = new MethodPatcher(HarmonyId, patches); var patchedMethods = patcher.Apply(); if (patchedMethods.Count == patches.Length) { PluginManager.instance.eventPluginsChanged += ModsChanged; VehicleManagerCustomizer.Customize(); } else { Log.Error("The 'More Vehicles' mod failed to perform method redirections"); patcher.Revert(); patcher = null; } }
/// <summary>Called when this mod is disabled.</summary> public void OnDisabled() { if (!isWorkshopMode || patcher == null) { return; } PluginManager.instance.eventPluginsChanged -= ModsChanged; patcher.Revert(); patcher = null; VehicleManagerCustomizer.Revert(); Log.Info("The 'More Vehicles' mod has been disabled."); }