From a89f307d5e7892c30b75c56ec74dc9589c0fe01a Mon Sep 17 00:00:00 2001 From: GER-Space Date: Wed, 16 Oct 2019 19:55:42 +0200 Subject: [PATCH] cleanup and fix MH launchsite selector logic. --- src/Core/LaunchSites/LaunchSiteManager.cs | 26 ++++++++--------------- src/KerbalKonstructs.cs | 22 +++++++------------ 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/src/Core/LaunchSites/LaunchSiteManager.cs b/src/Core/LaunchSites/LaunchSiteManager.cs index 5387f888..e986087b 100644 --- a/src/Core/LaunchSites/LaunchSiteManager.cs +++ b/src/Core/LaunchSites/LaunchSiteManager.cs @@ -256,12 +256,12 @@ internal static void AttachLaunchSite(StaticInstance instance, ConfigNode instan /// internal static void CloseLaunchSite(KKLaunchSite site) { + site.SetClosed(); if (Expansions.ExpansionsLoader.IsExpansionInstalled("MakingHistory") && HighLogic.LoadedScene == GameScenes.EDITOR) { Log.Normal("Close: " + site.LaunchSiteName); AlterMHSelector(); } - site.SetClosed(); } /// @@ -274,12 +274,14 @@ internal static void OpenLaunchSite(KKLaunchSite site) site.staticInstance.TrySpawn(); site.staticInstance.destructible.Reset(); } + + site.staticInstance.isDestroyed = false; + site.SetOpen(); if (Expansions.ExpansionsLoader.IsExpansionInstalled("MakingHistory") && HighLogic.LoadedScene == GameScenes.EDITOR) { Log.Normal("OpenSite: " + site.LaunchSiteName); AlterMHSelector(); } - site.SetOpen(); } @@ -419,8 +421,9 @@ internal static void RegisterLaunchSite(KKLaunchSite site, bool isSquad = false) } - public static void AlterMHSelector(bool triggerRestart = true) + public static void AlterMHSelector() { + Log.Normal("working on launchsites"); if (!HighLogic.CurrentGame.Parameters.Difficulty.AllowOtherLaunchSites) { return; @@ -428,21 +431,10 @@ public static void AlterMHSelector(bool triggerRestart = true) RegisterMHLaunchSites(EditorDriver.editorFacility); - if (triggerRestart) - { - GameEvents.onEditorRestart.Fire(); - } - else - { - KSP.UI.UILaunchsiteController uILaunchsiteController = Resources.FindObjectsOfTypeAll().FirstOrDefault(); - if (uILaunchsiteController == null) - { - Log.UserWarning("UILaunchsiteController not found"); - return; - } - uILaunchsiteController.GetType().GetMethod("resetItems", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(uILaunchsiteController, null); - } + KerbalKonstructs.launchSitesAltering = true; + GameEvents.onEditorRestart.Fire(); + KerbalKonstructs.launchSitesAltering = false; } diff --git a/src/KerbalKonstructs.cs b/src/KerbalKonstructs.cs index 953343cb..c3bcb382 100644 --- a/src/KerbalKonstructs.cs +++ b/src/KerbalKonstructs.cs @@ -149,6 +149,8 @@ internal bool debugMode internal static List deletedInstances = new List(); internal static List deletedGroups = new List(); + internal static bool launchSitesAltering = false; + /// /// Unity GameObject Awake function /// @@ -568,21 +570,13 @@ public IEnumerator WaitAndReset(GameEvents.VesselSpawnInfo info) public void OnEditorRestart() { - Log.Normal("On Editor Restart"); - LaunchSiteManager.AlterMHSelector(false); - } - - //public void OnGameSceneLoadRequested(GameScenes scene) - //{ - // if (scene == GameScenes.MAINMENU) - // { - // Log.Normal("OnGameSceneLoadRequested"); - // LaunchSiteManager.ResetLaunchSites(); - // typeof(EditorDriver).GetMethod("setupValidLaunchSites", BindingFlags.NonPublic | BindingFlags.Static).Invoke(null, null); - + //Log.Normal("On Editor Restart"); - // } - //} + if (!KerbalKonstructs.launchSitesAltering) + { + LaunchSiteManager.AlterMHSelector(); + } + } ///