/// <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;
            }
        }
Example #4
0
        /// <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;
            }
        }
Example #5
0
        /// <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.");
        }