Пример #1
0
        public void TechDisableEventFinal(bool save = false)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(TechDisableEventFinal);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (KCT_PresetManager.Instance != null && KCT_PresetManager.Instance.ActivePreset != null)
                {
                    if (KCT_PresetManager.Instance.ActivePreset.generalSettings.TechUnlockTimes && KCT_PresetManager.Instance.ActivePreset.generalSettings.BuildTimes)
                    {
                        foreach (KCT_TechItem tech in GameStates.TechList)
                        {
                            /* foreach (String partName in tech.UnlockedParts)
                             * {
                             *   AvailablePart expt = KCT_Utilities.GetAvailablePartByName(partName);
                             *   if (expt != null && ResearchAndDevelopment.IsExperimentalPart(expt))
                             *       if (!KCT_GameStates.ExperimentalParts.Contains(expt))
                             *           KCT_GameStates.ExperimentalParts.Add(expt);
                             * }*/
                            //ResearchAndDevelopment.AddExperimentalPart()
                            tech.DisableTech();
                        }

                        /*    foreach (AvailablePart expt in KCT_GameStates.ExperimentalParts)
                         *      ResearchAndDevelopment.AddExperimentalPart(expt);*/
                        //Need to somehow update the R&D instance
                        if (save)
                        {
                            GamePersistence.SaveGame("persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE);
                        }
                    }
                }
            }
        }
Пример #2
0
        public void vesselSituationChange(GameEvents.HostedFromToAction <Vessel, Vessel.Situations> ev)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(vesselSituationChange);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (ev.from == Vessel.Situations.PRELAUNCH && ev.host == FlightGlobals.ActiveVessel)
                {
                    if (KCT_PresetManager.Instance.ActivePreset.generalSettings.Enabled &&
                        KCT_PresetManager.Instance.ActivePreset.generalSettings.ReconditioningTimes)
                    {
                        //KCT_Recon_Rollout reconditioning = KCT_GameStates.ActiveKSC.Recon_Rollout.FirstOrDefault(r => ((IKCTBuildItem)r).GetItemName() == "LaunchPad Reconditioning");
                        //if (reconditioning == null)
                        if (HighLogic.CurrentGame.editorFacility == EditorFacility.VAB)
                        {
                            string launchSite = FlightDriver.LaunchSiteName;
                            if (launchSite == "LaunchPad")
                            {
                                launchSite = GameStates.ActiveKSC.ActiveLPInstance.name;
                            }
                            GameStates.ActiveKSC.Recon_Rollout.Add(new Recon_Rollout(ev.host, Recon_Rollout.RolloutReconType.Reconditioning, ev.host.id.ToString(), launchSite));
                        }
                    }
                }
            }
        }
Пример #3
0
        public static void reset()
        {
            const string logBlockName = nameof(GameStates) + "." + nameof(reset);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                firstStart         = false;
                vesselErrorAlerted = false;

                PurchasedUpgrades = new List <int>()
                {
                    0, 0
                };
                targetedItem = null;
                KCT_GUI.ResetFormulaRateHolders();

                InventorySaleUpgrades = 0;
                InventorySalesFigures = 0;

                ExperimentalParts.Clear();
                MiscellaneousTempUpgrades = 0;

                BuildingMaxLevelCache.Clear();

                lastUT = 0;
            }
        }
Пример #4
0
Файл: KSC.cs Проект: ntwest/KCT
        public void SwitchLaunchPad(int LP_ID, bool updateDestrNode = true)
        {
            const string logBlockName = nameof(SpaceCenterConstruction) + "." + nameof(SwitchLaunchPad);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                Log.Trace("LP_ID = ".MemoizedConcat(LP_ID.MemoizedToString()));
                Log.Trace("updateDestrNode = ".MemoizedConcat(updateDestrNode.MemoizedToString()));

                //set the active LP's new state
                //activate new pad

                //LaunchPads[ActiveLaunchPadID].level = KCT_Utilities.BuildingUpgradeLevel(SpaceCenterFacility.LaunchPad);
                //LaunchPads[ActiveLaunchPadID].destroyed = !KCT_Utilities.LaunchFacilityIntact(KCT_BuildListVessel.ListType.VAB); //Might want to remove this as well
                if (updateDestrNode)
                {
                    ActiveLPInstance.RefreshDestructionNode();
                }

                if (LaunchPads.Count <= LP_ID)
                {
                    Log.Error("LaunchPads List is Missing LaunchPad ID ".MemoizedConcat(LP_ID.MemoizedToString()));
                    return;
                }

                LaunchPads[LP_ID].SetActive();
            }
        }
Пример #5
0
Файл: KSC.cs Проект: ntwest/KCT
        public SpaceCenterConstruction(string name)
        {
            const string logBlockName = nameof(SpaceCenterConstruction) + "..ctor";

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                var sls  = PSystemSetup.Instance.StockLaunchSites.ToList();
                var nsls = PSystemSetup.Instance.NonStockLaunchSites.ToList();

                sls.ForEach(x =>
                {
                    Log.Info("Looking at Stock Launch Sites");
                    Log.Info(x.name);
                    Log.Info(x.launchSiteName);
                    Log.Info(x.nodeType.ToString());
                    Log.Info(x.pqsName);
                });
                nsls.ForEach(x =>
                {
                    Log.Info("Looking at NonStock Launch Sites");
                    Log.Info(x.name);
                    Log.Info(x.launchSiteName);
                    Log.Info(x.nodeType.ToString());
                    Log.Info(x.pqsName);
                });


                KSCName = name;
                //We propogate the tech list and upgrades throughout each KSC, since it doesn't make sense for each one to have its own tech.
                RDUpgrades[1] = GameStates.TechUpgradesTotal;
                //TechList = KCT_GameStates.ActiveKSC.TechList;
                LaunchPads.Add(new LaunchPad("LaunchPad", KCT_Utilities.BuildingUpgradeLevel(SpaceCenterFacility.LaunchPad)));
            }
        }
Пример #6
0
        public void OnGUIAppLauncherReady()
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(OnGUIAppLauncherReady);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                bool vis;
                if (ToolbarManager.ToolbarAvailable && GameStates.settings.PreferBlizzyToolbar)
                {
                    return;
                }

                if (ApplicationLauncher.Ready && (KCTButtonStock == null || !ApplicationLauncher.Instance.Contains(KCTButtonStock, out vis)))   //Add Stock button
                {
                    string texturePath = PluginAssemblyUtilities.iconKCTOn;
                    KCTEvents.instance.KCTButtonStock = ApplicationLauncher.Instance.AddModApplication(
                        KCT_GUI.ClickOn,
                        KCT_GUI.ClickOff,
                        KCT_GUI.onHoverOn,
                        KCT_GUI.onHoverOff,
                        KCTEvents.instance.DummyVoid,
                        KCTEvents.instance.DummyVoid,
                        ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.MAPVIEW | ApplicationLauncher.AppScenes.SPACECENTER | ApplicationLauncher.AppScenes.SPH | ApplicationLauncher.AppScenes.TRACKSTATION | ApplicationLauncher.AppScenes.VAB,
                        GameDatabase.Instance.GetTexture(texturePath, false));

                    ApplicationLauncher.Instance.EnableMutuallyExclusive(KCTEvents.instance.KCTButtonStock);

                    /*  if (HighLogic.LoadedScene == GameScenes.SPACECENTER && KCT_GameStates.showWindows[0])
                     * {
                     *    KCTButtonStock.SetTrue(true);
                     *    KCT_GUI.clicked = true;
                     * }*/
                }
            }
        }
Пример #7
0
        /// <summary>
        /// Log a block of code entry, exit, and timing
        /// </summary>
        /// <param name="blockName">The name of the code block being logged</param>
        /// <param name="options">The log options</param>
        /// <returns>A disposable object or none if logging is disabled</returns>
        public static IDisposable EntryExitLog(string blockName, EntryExitLoggerOptions options = EntryExitLoggerOptions.AlwaysLog)
        {
            IDisposable logger = null;

            if (Log.LoggingLevel == LogSeverity.Trace || ((options & EntryExitLoggerOptions.AlwaysLog) == EntryExitLoggerOptions.AlwaysLog))
            {
                // Check if ExecutionTime logging is requested, and if so log if Verbose logging (or greater) is chosen
                bool shouldCreate = ((options & EntryExitLoggerOptions.ExecutionTime) == EntryExitLoggerOptions.ExecutionTime);

                // If not logging ExecutionTime log only if Entry or Exit tracing is requested
                if (!shouldCreate)
                {
                    shouldCreate = (((options & EntryExitLoggerOptions.Entry) == EntryExitLoggerOptions.Entry) || ((options & EntryExitLoggerOptions.Exit) == EntryExitLoggerOptions.Exit));
                }

                // Check if we actually need to log anything
                if (shouldCreate)
                {
                    logger = new EntryExitLogger(blockName, options);
                }
            }

            // Will return null if no method logger was needed - which will effectively be ignored in a using statement.
            return(logger);
        }
Пример #8
0
Файл: KSC.cs Проект: ntwest/KCT
        public Recon_Rollout GetReconditioning(string launchSite = "LaunchPad")
        {
            const string logBlockName = nameof(SpaceCenterConstruction) + "." + nameof(GetReconditioning);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                return(Recon_Rollout.FirstOrDefault(r => r.launchPadID == launchSite && ((IKCTBuildItem)r).GetItemName() == "LaunchPad Reconditioning"));
            }
        }
Пример #9
0
        private static void CheckVesselsForMissingParts()
        {
            const string logBlockName = nameof(KerbalConstructionTime) + "." + nameof(DelayedStart);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                //check that all parts are valid in all ships. If not, warn the user and disable that vessel (once that code is written)
                if (!GameStates.vesselErrorAlerted)
                {
                    List <BuildListVessel> erroredVessels = new List <BuildListVessel>();
                    foreach (SpaceCenterConstruction KSC in GameStates.KSCs) //this is faster on subsequent scene changes
                    {
                        foreach (BuildListVessel blv in KSC.VABList)
                        {
                            if (!blv.allPartsValid)
                            {
                                //error!
                                Log.Trace(blv.shipName + " contains invalid parts!");
                                erroredVessels.Add(blv);
                            }
                        }
                        foreach (BuildListVessel blv in KSC.VABWarehouse)
                        {
                            if (!blv.allPartsValid)
                            {
                                //error!
                                Log.Trace(blv.shipName + " contains invalid parts!");
                                erroredVessels.Add(blv);
                            }
                        }
                        foreach (BuildListVessel blv in KSC.SPHList)
                        {
                            if (!blv.allPartsValid)
                            {
                                //error!
                                Log.Trace(blv.shipName + " contains invalid parts!");
                                erroredVessels.Add(blv);
                            }
                        }
                        foreach (BuildListVessel blv in KSC.SPHWarehouse)
                        {
                            if (!blv.allPartsValid)
                            {
                                //error!
                                Log.Trace(blv.shipName + " contains invalid parts!");
                                erroredVessels.Add(blv);
                            }
                        }
                    }
                    if (erroredVessels.Count > 0)
                    {
                        PopUpVesselError(erroredVessels);
                    }
                    GameStates.vesselErrorAlerted = true;
                }
            }
        }
Пример #10
0
Файл: KSC.cs Проект: ntwest/KCT
        public Recon_Rollout GetReconRollout(Recon_Rollout.RolloutReconType type, string launchSite = "LaunchPad")
        {
            const string logBlockName = nameof(SpaceCenterConstruction) + "." + nameof(GetReconRollout);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                return(Recon_Rollout.FirstOrDefault(r => r.RRType == type && r.launchPadID == launchSite));
            }
        }
Пример #11
0
        public void TechDisableEvent()
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(TechDisableEvent);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                TechDisableEventFinal(true);
            }
        }
Пример #12
0
        public KCTEvents()
        {
            const string logBlockName = nameof(KCTEvents) + ".CTOR";

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                eventAdded = false;
            }
        }
Пример #13
0
        private void ShipModifiedEvent(ShipConstruct vessel)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(ShipModifiedEvent);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                KerbalConstructionTime.instance.editorRecalcuationRequired = true;
            }
        }
Пример #14
0
        public void FacilityContextMenuSpawn(KSCFacilityContextMenu menu)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(FacilityContextMenuSpawn);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                KerbalConstructionTime.instance.FacilityContextMenuSpawn(menu);
            }
        }
Пример #15
0
        public void HideAllGUIs()
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(HideAllGUIs);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                //KCT_GUI.hideAll();
                KCT_GUI.ClickOff();
            }
        }
Пример #16
0
        internal void FacilityContextMenuSpawn(KSCFacilityContextMenu menu)
        {
            const string logBlockName = nameof(KerbalConstructionTime) + "." + nameof(FacilityContextMenuSpawn);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                KCT_KSCContextMenuOverrider overrider = new KCT_KSCContextMenuOverrider(menu);
                StartCoroutine(overrider.OnContextMenuSpawn());
            }
        }
Пример #17
0
        public void TechUnlockEvent(GameEvents.HostTargetAction <RDTech, RDTech.OperationResult> ev)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(TechUnlockEvent);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                //TODO: Check if any of the parts are experimental, if so, do the normal KCT stuff and then set them experimental again
                if (!KCT_PresetManager.Instance.ActivePreset.generalSettings.Enabled)
                {
                    return;
                }
                if (ev.target == RDTech.OperationResult.Successful)
                {
                    KCT_TechItem tech = new KCT_TechItem();
                    if (ev.host != null)
                    {
                        tech = new KCT_TechItem(ev.host);
                    }

                    foreach (AvailablePart expt in ev.host.partsPurchased)
                    {
                        if (ResearchAndDevelopment.IsExperimentalPart(expt))
                        {
                            GameStates.ExperimentalParts.Add(expt);
                        }
                    }

                    //if (!KCT_GameStates.settings.InstantTechUnlock && !KCT_GameStates.settings.DisableBuildTime) tech.DisableTech();
                    if (!tech.isInList())
                    {
                        if (KCT_PresetManager.Instance.ActivePreset.generalSettings.TechUpgrades)
                        {
                            ScreenMessages.PostScreenMessage("[KCT] Upgrade Point Added!", 4.0f, ScreenMessageStyle.UPPER_LEFT);
                        }

                        if (KCT_PresetManager.Instance.ActivePreset.generalSettings.TechUnlockTimes && KCT_PresetManager.Instance.ActivePreset.generalSettings.BuildTimes)
                        {
                            GameStates.TechList.Add(tech);
                            foreach (KCT_TechItem techItem in GameStates.TechList)
                            {
                                techItem.UpdateBuildRate(GameStates.TechList.IndexOf(techItem));
                            }
                            double timeLeft = tech.BuildRate > 0 ? tech.TimeLeft : tech.EstimatedTimeLeft;
                            ScreenMessages.PostScreenMessage("[KCT] Node will unlock in " + MagiCore.Utilities.GetFormattedTime(timeLeft), 4.0f, ScreenMessageStyle.UPPER_LEFT);
                        }
                    }
                    else
                    {
                        ResearchAndDevelopment.Instance.AddScience(tech.scienceCost, TransactionReasons.RnDTechResearch);
                        ScreenMessages.PostScreenMessage("[KCT] This node is already being researched!", 4.0f, ScreenMessageStyle.UPPER_LEFT);
                        ScreenMessages.PostScreenMessage("[KCT] It will unlock in " + MagiCore.Utilities.GetFormattedTime((GameStates.TechList.First(t => t.techID == ev.host.techID)).TimeLeft), 4.0f, ScreenMessageStyle.UPPER_LEFT);
                    }
                }
            }
        }
Пример #18
0
        public void Awake()
        {
            const string logBlockName = nameof(KerbalConstructionTime) + "." + nameof(Awake);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (KCT_Utilities.CurrentGameIsMission())
                {
                    return;
                }
                GameStates.erroredDuringOnLoad.OnLoadStart();
                GameStates.PersistenceLoaded = false;

                instance = this;

                GameStates.settings.Load(); //Load the settings file, if it exists

                string SavedFile = KSPUtil.ApplicationRootPath + "/saves/" + HighLogic.SaveFolder + "/KCT_Settings.cfg";
                if (!System.IO.File.Exists(SavedFile))
                {
                    GameStates.firstStart = true;
                }

                if (KCT_PresetManager.Instance == null)
                {
                    KCT_PresetManager.Instance = new KCT_PresetManager();
                }
                KCT_PresetManager.Instance.SetActiveFromSaveData();


                //Add the toolbar button
                if (ToolbarManager.ToolbarAvailable && ToolbarManager.Instance != null && GameStates.settings.PreferBlizzyToolbar)
                {
                    Log.Trace("Adding Toolbar Button");
                    GameStates.kctToolbarButton = ToolbarManager.Instance.add("Kerbal_Construction_Time", "MainButton");
                    if (GameStates.kctToolbarButton != null)
                    {
                        if (KCT_PresetManager.PresetLoaded() && !KCT_PresetManager.Instance.ActivePreset.generalSettings.Enabled)
                        {
                            GameStates.kctToolbarButton.Visibility = new GameScenesVisibility(GameScenes.SPACECENTER);
                        }
                        else
                        {
                            GameStates.kctToolbarButton.Visibility = new GameScenesVisibility(new GameScenes[] { GameScenes.SPACECENTER, GameScenes.FLIGHT, GameScenes.TRACKSTATION, GameScenes.EDITOR });
                        }
                        GameStates.kctToolbarButton.TexturePath = KCT_Utilities.GetButtonTexture();
                        GameStates.kctToolbarButton.ToolTip     = "Kerbal Construction Time";
                        GameStates.kctToolbarButton.OnClick    += ((e) =>
                        {
                            KCT_GUI.ClickToggle();
                        });
                    }
                }
            }
        }
Пример #19
0
        public void OnLoadFinish()
        {
            const string logBlockName = nameof(KCT_OnLoadError) + "." + nameof(OnLoadFinish);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                OnLoadCalled   = false;
                OnLoadFinished = true;
                timer          = -1;
                Log.Info("OnLoad Complete");
            }
        }
Пример #20
0
        private void SYInventoryApplied()
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(SYInventoryApplied);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                Log.Info("Inventory was applied. Recalculating.");
                if (HighLogic.LoadedSceneIsEditor)
                {
                    KerbalConstructionTime.instance.editorRecalcuationRequired = true;
                }
            }
        }
Пример #21
0
        public void RecoveryRequested(Vessel v)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(RecoveryRequested);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                //ShipBackup backup = ShipAssembly.MakeVesselBackup(v);
                //string tempFile = KSPUtil.ApplicationRootPath + "saves/" + HighLogic.SaveFolder + "/Ships/temp2.craft";
                //backup.SaveShip(tempFile);

                // KCT_GameStates.recoveryRequestVessel = backup; //ConfigNode.Load(tempFile);
            }
        }
Пример #22
0
        public void OnLoadStart()
        {
            const string logBlockName = nameof(KCT_OnLoadError) + "." + nameof(OnLoadStart);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                Log.Info("OnLoad Started");
                OnLoadCalled   = true;
                OnLoadFinished = false;
                timer          = 0;
                AlertFired     = false;
            }
        }
Пример #23
0
        public void TechEnableEvent()
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(TechEnableEvent);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (KCT_PresetManager.Instance.ActivePreset.generalSettings.TechUnlockTimes && KCT_PresetManager.Instance.ActivePreset.generalSettings.BuildTimes)
                {
                    foreach (KCT_TechItem techItem in GameStates.TechList)
                    {
                        techItem.EnableTech();
                    }
                }
            }
        }
Пример #24
0
        public void FacilityDestroyed(DestructibleBuilding facility)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(FaciliyRepaired);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (facility.id.Contains("LaunchPad"))
                {
                    Log.Info("LaunchPad was damaged.");

                    //KCT_GameStates.ActiveKSC.LaunchPads[KCT_GameStates.ActiveKSC.ActiveLaunchPadID].destroyed = !KCT_Utilities.LaunchFacilityIntact(KCT_BuildListVessel.ListType.VAB);
                    GameStates.ActiveKSC.ActiveLPInstance.RefreshDestructionNode();
                }
            }
        }
Пример #25
0
        public void FacilityRepairingEvent(DestructibleBuilding facility)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(FacilityRepairingEvent);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (KCT_GUI.PrimarilyDisabled)
                {
                    return;
                }
                double cost = facility.RepairCost;
                double BP   = Math.Sqrt(cost) * 2000 * KCT_PresetManager.Instance.ActivePreset.timeSettings.OverallMultiplier;
                Log.Info("Facility being repaired for " + cost + " funds, resulting in a BP of " + BP);
                //facility.StopCoroutine("Repair");
            }
        }
Пример #26
0
        public void FaciliyRepaired(DestructibleBuilding facility)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(FaciliyRepaired);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (facility.id.Contains("LaunchPad"))
                {
                    Log.Info("LaunchPad was repaired.");

                    //KCT_GameStates.ActiveKSC.LaunchPads[KCT_GameStates.ActiveKSC.ActiveLaunchPadID].destroyed = false;
                    GameStates.ActiveKSC.ActiveLPInstance.RefreshDestructionNode();
                    GameStates.ActiveKSC.ActiveLPInstance.CompletelyRepairNode();
                }
            }
        }
Пример #27
0
        public void PersistenceLoadEvent(ConfigNode node)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(PersistenceLoadEvent);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                //KCT_GameStates.erroredDuringOnLoad.OnLoadStart();
                Log.Trace("Looking for tech nodes.");
                ConfigNode rnd = node.GetNodes("SCENARIO").FirstOrDefault(n => n.GetValue("name") == "ResearchAndDevelopment");
                if (rnd != null)
                {
                    GameStates.LastKnownTechCount = rnd.GetNodes("Tech").Length;
                    Log.Trace("Counting " + GameStates.LastKnownTechCount + " tech nodes.");
                }
                GameStates.PersistenceLoaded = true;
            }
        }
Пример #28
0
        public void OnDestroy()//more toolbar stuff
        {
            const string logBlockName = nameof(KerbalConstructionTime) + "." + nameof(OnDestroy);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (GameStates.kctToolbarButton != null)
                {
                    GameStates.kctToolbarButton.Destroy();
                }
                if (KCTEvents.instance.KCTButtonStock != null)
                {
                    KSP.UI.Screens.ApplicationLauncher.Instance.RemoveModApplication(KCTEvents.instance.KCTButtonStock);
                }

                KCT_GUI.guiDataSaver.Save();
            }
        }
Пример #29
0
Файл: KSC.cs Проект: ntwest/KCT
        /// <summary>
        /// Finds the highest level LaunchPad on the KSC
        /// </summary>
        /// <returns>The instance of the highest level LaunchPad</returns>
        public LaunchPad GetHighestLevelLaunchPad()
        {
            const string logBlockName = nameof(SpaceCenterConstruction) + "." + nameof(GetHighestLevelLaunchPad);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                LaunchPad highest = LaunchPads[0];

                foreach (LaunchPad pad in LaunchPads)
                {
                    if (pad.level > highest.level)
                    {
                        highest = pad;
                    }
                }
                return(highest);
            }
        }
Пример #30
0
        public void launchScreenOpenEvent(GameEvents.VesselSpawnInfo v)
        {
            const string logBlockName = nameof(KCTEvents) + "." + nameof(launchScreenOpenEvent);

            using (EntryExitLogger.EntryExitLog(logBlockName, EntryExitLoggerOptions.All))
            {
                if (!KCT_GUI.PrimarilyDisabled)
                {
                    // PopupDialog.SpawnPopupDialog(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), "Warning!", "To launch vessels you must first build them in the VAB or SPH, then launch them through the main KCT window in the Space Center!", "Ok", false, HighLogic.UISkin);
                    //open the build list to the right page
                    string selection = (v.craftSubfolder.Contains("SPH")) ? "SPH" : "VAB";
                    KCT_GUI.ClickOn();
                    KCT_GUI.SelectList("");
                    KCT_GUI.SelectList(selection);
                    Log.Trace("Opening the GUI to the " + selection);
                }
            }
        }