예제 #1
0
파일: Loading.cs 프로젝트: Alexof/BOB
        /// <summary>
        /// Called by the game when level loading is complete.
        /// </summary>
        /// <param name="mode">Loading mode (e.g. game, editor, scenario, etc.)</param>
        public override void OnLevelLoaded(LoadMode mode)
        {
            Logging.Message("commencing loading checks");

            base.OnLevelLoaded(mode);

            // Don't do anything further if we're not operating.
            if (!isModEnabled)
            {
                Logging.Message("exiting");
                return;
            }

            // Check to see that Harmony 2 was properly loaded.
            if (!Patcher.Patched)
            {
                // Harmony 2 wasn't loaded; abort.
                Logging.Error("Harmony patches not applied; aborting");
                isModEnabled = false;

                // Display warning message.
                ListMessageBox harmonyBox = MessageBoxBase.ShowModal <ListMessageBox>();

                // Key text items.
                harmonyBox.AddParas(Translations.Translate("ERR_HAR0"), Translations.Translate("BOB_ERR_HAR"), Translations.Translate("BOB_ERR_FAT"), Translations.Translate("ERR_HAR1"));

                // List of dot points.
                harmonyBox.AddList(Translations.Translate("ERR_HAR2"), Translations.Translate("ERR_HAR3"));

                // Closing para.
                harmonyBox.AddParas(Translations.Translate("MES_PAGE"));

                // Don't do anything further.
                return;
            }

            Logging.Message("loading checks passed");

            // Build lists of loaded prefabs.
            PrefabLists.BuildLists();

            // Load prop packs.
            new NetworkPackReplacement();

            // Load configuration file.
            ConfigurationUtils.LoadConfig();

            // Set up BOB tool.
            ToolsModifierControl.toolController.gameObject.AddComponent <BOBTool>();

            // Display update notification.
            WhatsNew.ShowWhatsNew();

            // Set up Network Skins 2 reflection.
            ModUtils.NS2Reflection();

            // Enable thin wires, if applicable.
            if (ModSettings.ThinnerWires)
            {
                ElectricalWires.Instance.ApplyThinnerWires();
            }

            // Force update of any dirty net or building prefabs from replacement process.
            Logging.Message("updating dirty prefabs");
            BuildingData.Update();
            NetData.Update();

            // Set up options panel event handler.
            OptionsPanel.OptionsEventHook();

            // Display any exception message that occured during load.
            InfoPanelManager.CheckException();

            // Activate tool hotkey.
            UIThreading.Operating = true;

            Logging.Message("loading complete");
        }
예제 #2
0
        /// <summary>
        /// Reverts all current settings and clears replacement dictionaries.
        /// </summary>
        internal static void NukeSettings()
        {
            Logging.KeyMessage("reverting all replacements");

            // Revert all-building replacements.
            try
            {
                AllBuildingReplacement.Instance?.RevertAll();
            }
            catch (Exception e)
            {
                // Don't let a single failure stop us.
                Logging.LogException(e, "exception reverting all-building replacements");
            }

            // Revert building replacements.
            try
            {
                BuildingReplacement.Instance?.RevertAll();
            }
            catch (Exception e)
            {
                // Don't let a single failure stop us.
                Logging.LogException(e, "exception reverting building replacements");
            }

            // Revert individual building replacements.
            try
            {
                IndividualBuildingReplacement.Instance?.RevertAll();
            }
            catch (Exception e)
            {
                // Don't let a single failure stop us.
                Logging.LogException(e, "exception reverting individual building replacements");
            }

            // Revert network pack replacements.
            try
            {
                NetworkPackReplacement.Instance?.RevertAll();
            }
            catch (Exception e)
            {
                // Don't let a single failure stop us.
                Logging.LogException(e, "exception reverting network pack replacements");
            }

            // Revert all-network replacements.
            try
            {
                AllNetworkReplacement.Instance?.RevertAll();
            }
            catch (Exception e)
            {
                // Don't let a single failure stop us.
                Logging.LogException(e, "exception reverting all-network replacements");
            }

            // Revert network replacements.
            try
            {
                NetworkReplacement.Instance?.RevertAll();
            }
            catch (Exception e)
            {
                // Don't let a single failure stop us.
                Logging.LogException(e, "exception reverting network replacements");
            }

            // Revert individual network replacements.
            try
            {
                IndividualNetworkReplacement.Instance?.RevertAll();
            }
            catch (Exception e)
            {
                // Don't let a single failure stop us.
                Logging.LogException(e, "exception reverting individual network replacements");
            }

            // Revert scaling.
            try
            {
                Scaling.Instance?.RevertAll();
            }
            catch (Exception e)
            {
                // Don't let a single failure stop us.
                Logging.LogException(e, "exception reverting scaling elemennts");
            }

            // Regenerate dirty renders.
            NetData.Update();
            BuildingData.Update();
        }