internal PortFilterComponent(PortFilter filter, PortFilterType type, PortDeleteFilter onDeleted) { this.Filter = filter; int selected = 0; if (ItemCategories.NumToName.TryGetValue(this.Filter.Category, out string category)) { selected = ItemCategories.Names.IndexOf(category); } this.Dropdown = new DropdownComponent(ItemCategories.Names, "", 300) { visible = true, SelectionIndex = selected }; this.Dropdown.DropDownOptionSelected += DropDownOptionSelected; this.DeleteButton = new ButtonComponent("", Sprites.Icons.Sheet, Sprites.Icons.Clear, 2, true) { visible = true, HoverText = "Delete" }; this.DeleteButton.ButtonPressed += () => onDeleted(Filter); if (type == PortFilterType.REQUESTS) { BuildSlider(); } }
private void BuildSlider() { if (Filter.RequestAmount == int.MaxValue) { this.RequestAllToggle = new ButtonComponent("Until full", Sprites.Icons.Sheet, Sprites.Icons.Set, 2, true) { visible = true, HoverText = "Click to request a specific amount" }; this.RequestAllToggle.ButtonPressed += () => { Filter.RequestAmount = 1; BuildSlider(); }; this.RequestAmountSlider = null; } else { int min = Math.Max(0, 100 * (int)((Filter.RequestAmount - 1) / 100)); this.RequestAmountSlider = new SliderComponent("Amount", Math.Max(1, min), min + 101, 1, Filter.RequestAmount, true, RequestAmountSlider?.X ?? 0, RequestAmountSlider?.Y ?? 0) { visible = true }; this.RequestAmountSlider.SliderValueChanged += (v) => { Filter.RequestAmount = (int)v; RequestAmountChanged = true; }; this.RequestAmountChanged = false; this.RequestAllToggle = null; } UpdateLayout(Dropdown.X, Dropdown.Y, Width, Height); }