static void vessels_list(HangarStorage storage, ref Vector2 scroll, ref PackedVessel selected, bool is_lhs = true) { if (storage == null) { return; } scroll = GUILayout.BeginScrollView(scroll, GUILayout.Height(scroll_height), GUILayout.Width(scroll_width)); GUILayout.BeginVertical(); List <PackedVessel> vessels = storage.GetVessels(); vessels.Sort((a, b) => a.name.CompareTo(b.name)); foreach (var v in vessels) { GUILayout.BeginHorizontal(); if (is_lhs) { HangarGUI.PackedVesselLabel(v); } if (GUILayout.Button(is_lhs? ">>" : "<<", Styles.normal_button, GUILayout.ExpandWidth(true))) { selected = v; } if (!is_lhs) { HangarGUI.PackedVesselLabel(v); } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); GUILayout.EndScrollView(); }
void hangar_content_editor(int windowID) { GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); //Vessel selector if (GUILayout.Button("Select Vessel", Styles.normal_button, GUILayout.ExpandWidth(true))) { construct_loader.SelectVessel(); } if (GUILayout.Button("Select Subassembly", Styles.normal_button, GUILayout.ExpandWidth(true))) { construct_loader.SelectSubassembly(); } if (GUILayout.Button("Select Part", Styles.normal_button, GUILayout.ExpandWidth(true))) { construct_loader.SelectPart(part.flagURL); } GUILayout.EndHorizontal(); //hangar info if (ConnectedStorage.Count > 1) { HangarGUI.UsedVolumeLabel(TotalUsedVolume, TotalUsedVolumeFrac, "Total Used Volume"); } HangarGUI.UsedVolumeLabel(UsedVolume, UsedVolumeFrac); //hangar contents if (highlighted_content != null) { DrawSpawnRotationControls(highlighted_content); } var vessels = Storage.GetVessels(); vessels.Sort((a, b) => string.Compare(a.name, b.name, System.StringComparison.CurrentCulture)); constructs_scroll = GUILayout.BeginScrollView(constructs_scroll, GUILayout.Height(200), GUILayout.Width(window_width)); GUILayout.BeginVertical(); foreach (PackedVessel pv in vessels) { GUILayout.BeginHorizontal(); if (HangarGUI.PackedVesselLabel(pv, pv == highlighted_content ? Styles.white : Styles.label)) { if (highlighted_content != pv) { SetHighlightedContent(pv, ContentState.Fits); } else { SetHighlightedContent(null); } } if (GUILayout.Button("+1", Styles.open_button, GUILayout.Width(25))) { if (pv is PackedConstruct pc) { try_store_packed_vessel(pc.Clone(), false); } } if (GUILayout.Button("X", Styles.danger_button, GUILayout.Width(25))) { Storage.RemoveVessel(pv); } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); GUILayout.EndScrollView(); //unfit constructs var constructs = Storage.UnfitConstucts; if (constructs.Count > 0) { GUILayout.Label("Unfit vessels:", Styles.active, GUILayout.ExpandWidth(true)); unfit_scroll = GUILayout.BeginScrollView(unfit_scroll, GUILayout.Height(100), GUILayout.Width(window_width)); GUILayout.BeginVertical(); foreach (PackedConstruct pc in Storage.UnfitConstucts) { GUILayout.BeginHorizontal(); if (HangarGUI.PackedVesselLabel(pc, pc == highlighted_content ? Styles.white : Styles.label)) { if (highlighted_content != pc) { SetHighlightedContent(pc, ContentState.DoesntFit); } else { SetHighlightedContent(null); } } if (GUILayout.Button("^", Styles.open_button, GUILayout.Width(25))) { if (try_store_packed_vessel(pc.Clone(), false)) { Storage.RemoveUnfit(pc); } } if (GUILayout.Button("X", Styles.danger_button, GUILayout.Width(25))) { Storage.RemoveUnfit(pc); } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); GUILayout.EndScrollView(); } //common buttons if (GUILayout.Button("Clear", Styles.danger_button, GUILayout.ExpandWidth(true))) { Storage.ClearVessels(); } if (GUILayout.Button("Close", Styles.normal_button, GUILayout.ExpandWidth(true))) { Utils.LockControls(eLock, false); SetHighlightedContent(null); editing_content = false; } GUILayout.EndVertical(); GUIWindowBase.TooltipsAndDragWindow(); }