public static KCT_BuildListVessel AddVesselToBuildList(Dictionary <String, int> inventory) { KCT_BuildListVessel blv = new KCT_BuildListVessel(EditorLogic.fetch.ship, EditorLogic.fetch.launchSiteName, KCT_Utilities.GetBuildTime(EditorLogic.fetch.ship.SaveShip().GetNodes("PART").ToList(), true, inventory), EditorLogic.FlagURL); blv.shipName = EditorLogic.fetch.shipNameField.Text; return(AddVesselToBuildList(blv, inventory)); }
public static void MoveVesselToWarehouse(int ListIdentifier, int index) { if (ToolbarManager.ToolbarAvailable) { KCT_GameStates.kctToolbarButton.Important = true; //Show the button if it is hidden away startedFlashing = DateTime.Now; //Set the time to start flashing } if (KCT_GameStates.settings.ForceStopWarp && TimeWarp.CurrentRateIndex != 0) { TimeWarp.SetRate(0, true); KCT_GameStates.warpInitiated = false; } StringBuilder Message = new StringBuilder(); Message.AppendLine("The following vessel is complete:"); KCT_BuildListVessel vessel = null; if (ListIdentifier == 0) //VAB list { vessel = KCT_GameStates.VABList[index]; KCT_GameStates.VABList.RemoveAt(index); KCT_GameStates.VABWarehouse.Add(vessel); Message.AppendLine(vessel.shipName); Message.AppendLine("Please check the VAB Storage to launch it."); } else if (ListIdentifier == 1)//SPH list { vessel = KCT_GameStates.SPHList[index]; KCT_GameStates.SPHList.RemoveAt(index); KCT_GameStates.SPHWarehouse.Add(vessel); Message.AppendLine(vessel.shipName); Message.AppendLine("Please check the SPH Storage to launch it."); } //Assign science based on science rate if (CurrentGameHasScience() && !vessel.cannotEarnScience) { AddScienceWithMessage((float)(KCT_GameStates.RDUpgrades[0] * 0.5 * vessel.buildPoints / 86400)); } //Add parts to the tracker if (!vessel.cannotEarnScience) { List <string> trackedParts = new List <string>(); foreach (ConfigNode p in vessel.ExtractedPartNodes) { if (!trackedParts.Contains(PartNameFromNode(p) + GetTweakScaleSize(p))) { AddPartToTracker(PartNameFromNode(p) + GetTweakScaleSize(p)); trackedParts.Add(PartNameFromNode(p) + GetTweakScaleSize(p)); } } } string stor = ListIdentifier == 0 ? "VAB" : "SPH"; KCTDebug.Log("Moved vessel " + vessel.shipName + " to " + stor + " storage."); foreach (KCT_BuildListVessel blv in KCT_GameStates.VABList) { double newTime = KCT_Utilities.GetBuildTime(blv.ExtractedPartNodes, true, blv.InventoryParts); //Use only the parts that were originally used when recalculating if (newTime < blv.buildPoints) { blv.buildPoints = blv.buildPoints - ((blv.buildPoints - newTime) * (100 - blv.ProgressPercent()) / 100.0); //If progress=0% then set to new build time, 100%=no change, 50%=half of difference. } } foreach (KCT_BuildListVessel blv in KCT_GameStates.SPHList) { double newTime = KCT_Utilities.GetBuildTime(blv.ExtractedPartNodes, true, blv.InventoryParts); if (newTime < blv.buildPoints) { blv.buildPoints = blv.buildPoints - ((blv.buildPoints - newTime) * (100 - blv.ProgressPercent()) / 100.0); //If progress=0% then set to new build time, 100%=no change, 50%=half of difference. } } KCT_GUI.ResetBLWindow(); if (!KCT_GameStates.settings.DisableAllMessages) { DisplayMessage("Vessel Complete!", Message, MessageSystemButton.MessageButtonColor.GREEN, MessageSystemButton.ButtonIcons.COMPLETE); } }