Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }