private static void DrawBLPlusWindow(int windowID) { //bLPlusPosition.xMax = buildListWindowPosition.xMin; //bLPlusPosition.width = 100; bLPlusPosition.yMin = buildListWindowPosition.yMin; bLPlusPosition.height = 225; //bLPlusPosition.height = bLPlusPosition.yMax - bLPlusPosition.yMin; KCT_BuildListVessel b = KCT_Utilities.FindBLVesselByID(IDSelected); GUILayout.BeginVertical(); if (GUILayout.Button("Scrap")) { InputLockManager.SetControlLock(ControlTypes.KSC_ALL, "KCTPopupLock"); DialogOption[] options = new DialogOption[2]; options[0] = new DialogOption("Yes", ScrapVessel); options[1] = new DialogOption("No", DummyVoid); MultiOptionDialog diag = new MultiOptionDialog("Are you sure you want to scrap this vessel?", windowTitle: "Scrap Vessel", options: options); PopupDialog.SpawnPopupDialog(diag, false, windowSkin); showBLPlus = false; ResetBLWindow(); } if (GUILayout.Button("Edit")) { showBLPlus = false; editorWindowPosition.height = 1; string tempFile = KSPUtil.ApplicationRootPath + "saves/" + HighLogic.SaveFolder + "/Ships/temp.craft"; b.shipNode.Save(tempFile); GamePersistence.SaveGame("persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE); KCT_GameStates.editedVessel = b; KCT_GameStates.EditorShipEditingMode = true; KCT_GameStates.delayStart = true; InputLockManager.SetControlLock(ControlTypes.EDITOR_EXIT, "KCTEditExit"); InputLockManager.SetControlLock(ControlTypes.EDITOR_LOAD, "KCTEditLoad"); InputLockManager.SetControlLock(ControlTypes.EDITOR_NEW, "KCTEditNew"); InputLockManager.SetControlLock(ControlTypes.EDITOR_LAUNCH, "KCTEditLaunch"); KCT_GameStates.EditedVesselParts.Clear(); foreach (ConfigNode node in b.ExtractedPartNodes) { string name = KCT_Utilities.PartNameFromNode(node) + KCT_Utilities.GetTweakScaleSize(node); if (!KCT_GameStates.EditedVesselParts.ContainsKey(name)) { KCT_GameStates.EditedVesselParts.Add(name, 1); } else { ++KCT_GameStates.EditedVesselParts[name]; } } //EditorDriver.StartAndLoadVessel(tempFile); EditorDriver.StartAndLoadVessel(tempFile, b.type == KCT_BuildListVessel.ListType.VAB ? EditorFacility.VAB : EditorFacility.SPH); } if (GUILayout.Button("Rename")) { centralWindowPosition.width = 360; centralWindowPosition.x = (Screen.width - 360) / 2; centralWindowPosition.height = 1; showBuildList = false; showBLPlus = false; showRename = true; newName = b.shipName; //newDesc = b.getShip().shipDescription; } if (GUILayout.Button("Duplicate")) { KCT_Utilities.AddVesselToBuildList(b.NewCopy(true), b.InventoryParts.Count > 0); } if (KCT_GameStates.ActiveKSC.Recon_Rollout.Find(rr => rr.RRType == KCT_Recon_Rollout.RolloutReconType.Rollout && rr.associatedID == b.id.ToString()) != null && GUILayout.Button("Rollback")) { KCT_GameStates.ActiveKSC.Recon_Rollout.Find(rr => rr.RRType == KCT_Recon_Rollout.RolloutReconType.Rollout && rr.associatedID == b.id.ToString()).SwapRolloutType(); } if (!b.isFinished && GUILayout.Button("Warp To")) { KCT_GameStates.targetedItem = b; KCT_GameStates.canWarp = true; KCT_Utilities.RampUpWarp(b); KCT_GameStates.warpInitiated = true; showBLPlus = false; } if (!b.isFinished && GUILayout.Button("Move to Top")) { if (b.type == KCT_BuildListVessel.ListType.VAB) { b.RemoveFromBuildList(); KCT_GameStates.ActiveKSC.VABList.Insert(0, b); } else if (b.type == KCT_BuildListVessel.ListType.SPH) { b.RemoveFromBuildList(); KCT_GameStates.ActiveKSC.SPHList.Insert(0, b); } } if (!b.isFinished && GUILayout.Button("Rush Build 10%\n√" + Math.Round(0.2 * b.GetTotalCost()))) { double cost = b.GetTotalCost(); cost *= 0.2; double remainingBP = b.buildPoints - b.progress; if (Funding.Instance.Funds >= cost) { b.AddProgress(remainingBP * 0.1); KCT_Utilities.SpendFunds(cost, TransactionReasons.None); } } if (GUILayout.Button("Close")) { showBLPlus = false; } GUILayout.EndVertical(); float width = bLPlusPosition.width; bLPlusPosition.x = buildListWindowPosition.x - width; bLPlusPosition.width = width; }
private static void DrawBuildPlansWindow(int id) { int butW = 20; GUILayout.BeginVertical(); if (HighLogic.LoadedSceneIsEditor) { if (EditorLogic.fetch.ship != null && EditorLogic.fetch.ship.Parts != null && EditorLogic.fetch.ship.Parts.Count > 0) { if (EditorLogic.fetch.ship.shipName == "Untitled Space Craft" || EditorLogic.fetch.ship.shipName == "") { if (GUILayout.Button("Cannot Add a Plan Without a Valid Name", GUILayout.Height(2 * 22))) { if (EditorLogic.fetch.ship.shipName == "Untitled Space Craft") { var message = new ScreenMessage("[KCT] Vessel must have a name other than 'Untitled Space Craft'.", 4.0f, ScreenMessageStyle.UPPER_CENTER); ScreenMessages.PostScreenMessage(message); } else { var message = new ScreenMessage("[KCT] Vessel must have a name", 4.0f, ScreenMessageStyle.UPPER_CENTER); ScreenMessages.PostScreenMessage(message); } } } else { GUILayout.BeginHorizontal(); if (GUILayout.Button("Add To Building Plans", GUILayout.Height(2 * 22))) { AddVesselToPlansList(); } GUILayout.EndHorizontal(); //if (!KCT_GameStates.settings.OverrideLaunchButton) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Build", GUILayout.Height(2 * 22))) { KCT_Utilities.AddVesselToBuildList(); //SwitchCurrentPartCategory(); KCT_Utilities.RecalculateEditorBuildTime(EditorLogic.fetch.ship); } GUILayout.EndHorizontal(); } } } else { GUILayout.Button("No vessel available", GUILayout.Height(2 * 22)); } } GUILayout.Space(10); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("Available Building Plans"); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); bool VABSelectedNew = GUILayout.Toggle(VABSelected, "VAB", GUI.skin.button); bool SPHSelectedNew = GUILayout.Toggle(SPHSelected, "SPH", GUI.skin.button); if (VABSelectedNew != VABSelected) { SelectList("VAB"); } else if (SPHSelectedNew != SPHSelected) { SelectList("SPH"); } GUILayout.EndHorizontal(); { switch (listWindow) { case 0: plansList = KCT_GameStates.ActiveKSC.VABPlans; break; case 1: plansList = KCT_GameStates.ActiveKSC.SPHPlans; break; } if (listWindow >= 0 && plansList != null) { GUILayout.BeginHorizontal(); // GUILayout.Space((butW + 4) * 3); GUILayout.Label("Name:"); GUILayout.EndHorizontal(); buildPlanScrollPos = GUILayout.BeginScrollView(buildPlanScrollPos, GUILayout.Height(250)); if (plansList.Count == 0) { GUILayout.Label("No vessels in plans."); } for (int i = 0; i < plansList.Count; i++) { KCT_BuildListVessel b = plansList.Values[i]; if (!b.allPartsValid) { continue; } GUILayout.BeginHorizontal(); { if (GUILayout.Button("X", redButton, GUILayout.Width(butW))) { planToDelete = i; InputLockManager.SetControlLock(ControlTypes.EDITOR_SOFT_LOCK, "KCTPopupLock"); IDSelected = b.id; DialogGUIBase[] options = new DialogGUIBase[2]; options[0] = new DialogGUIButton("Yes", RemoveVesselFromPlans); options[1] = new DialogGUIButton("No", DummyVoid); MultiOptionDialog diag = new MultiOptionDialog("scrapVesselPopup", "Are you sure you want to remove this vessel from the plans?", "Delete plan", null, options: options); PopupDialog.SpawnPopupDialog(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), diag, false, HighLogic.UISkin); } if (GUILayout.Button(b.shipName)) { KCT_Utilities.AddVesselToBuildList(b.NewCopy(true)); } } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); } GUILayout.FlexibleSpace(); if (GUILayout.Button("Close")) { showBuildPlansWindow = false; } } GUILayout.EndVertical(); GUI.DragWindow(); }