public void GameSceneEvent(GameScenes scene) { KCT_GUI.HideAll(); if (scene == GameScenes.MAINMENU) { KCTGameStates.Reset(); KCTGameStates.IsFirstStart = false; InputLockManager.RemoveControlLock("KCTLaunchLock"); KCTGameStates.ActiveKSCName = Utilities._defaultKscId; KCTGameStates.ActiveKSC = new KSCItem(Utilities._defaultKscId); KCTGameStates.KSCs = new List <KSCItem>() { KCTGameStates.ActiveKSC }; KCTGameStates.LastKnownTechCount = 0; if (PresetManager.Instance != null) { PresetManager.Instance.ClearPresets(); PresetManager.Instance = null; } return; } KCTGameStates.MiscellaneousTempUpgrades = 0; if (PresetManager.PresetLoaded() && !PresetManager.Instance.ActivePreset.GeneralSettings.Enabled) { return; } var validScenes = new List <GameScenes> { GameScenes.SPACECENTER, GameScenes.TRACKSTATION, GameScenes.EDITOR }; if (validScenes.Contains(scene)) { TechDisableEventFinal(); } if (HighLogic.LoadedScene == scene && scene == GameScenes.EDITOR) //Fix for null reference when using new or load buttons in editor { GamePersistence.SaveGame("persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE); } if (HighLogic.LoadedSceneIsEditor) { EditorLogic.fetch.Unlock("KCTEditorMouseLock"); } if (scene == GameScenes.EDITOR && !HighLogic.LoadedSceneIsEditor) { KCT_GUI.FirstOnGUIUpdate = true; } }
public void IncrementProgress(double UTDiff) { // Don't progress blocked items if (GetBlockingTech(KCTGameStates.TechList) != null) { return; } Progress += BuildRate * UTDiff; if (IsComplete() || !PresetManager.Instance.ActivePreset.GeneralSettings.TechUnlockTimes) { if (KCTGameStates.Settings.ForceStopWarp && TimeWarp.CurrentRate > 1f) { TimeWarp.SetRate(0, true); } if (ProtoNode == null) { return; } EnableTech(); try { KCTEvents.OnTechCompleted?.Fire(ProtoNode); } catch (Exception ex) { Debug.LogException(ex); } KCTGameStates.TechList.Remove(this); if (PresetManager.PresetLoaded() && PresetManager.Instance.ActivePreset.GeneralSettings.TechUpgrades) { KCTGameStates.MiscellaneousTempUpgrades++; } for (int j = 0; j < KCTGameStates.TechList.Count; j++) { KCTGameStates.TechList[j].UpdateBuildRate(j); } } }