public void RegisterFilter(FilterTypes type, ThingItemFilter filter) { ThingItemFilterCategory result = _filters.FirstOrDefault(f => f.FilterType == type); if (result == null) { var category = new ThingItemFilterCategory { FilterType = type }; category.Filters.Add(filter); filter.Category = category; _filters.Add(category); return; } ThingItemFilter storedFilter = result.Filters.FirstOrDefault(f => f.Id.Equals(filter.Id)); if (storedFilter != null) { storedFilter.Active = true; return; } filter.Category = result; result.Filters.Add(filter); }
private void DrawFiltersFor([NotNull] ThingItemFilterCategory category, Listing listing, Rect viewPort) { foreach (ThingItemFilter filter in category.Filters) { Rect lineRect = listing.GetRect(Text.LineHeight); if (!lineRect.IsVisible(viewPort, _scrollPos)) { continue; } var canvas = new Rect(lineRect.x + lineRect.height * 2f, lineRect.y, lineRect.width - lineRect.height * 2f - 8, lineRect.height); var checkRect = new Rect(canvas.x + 4f, canvas.y + 4f, 12f, 12f); var textRect = new Rect(checkRect.x + checkRect.width, canvas.y, canvas.width - checkRect.width, canvas.height); GUI.DrawTexture(checkRect, filter.Active ? Widgets.CheckboxOnTex : Widgets.CheckboxOffTex); if (textRect.width < filter.LabelWidth) { UiHelper.Label(textRect, filter.Label, TextAnchor.MiddleLeft, GameFont.Tiny); } else { UiHelper.Label(textRect, filter.Label); } if (Widgets.ButtonInvisible(canvas)) { filter.Active = !filter.Active; } Widgets.DrawHighlightIfMouseover(canvas); } }
public void UnregisterFilter(FilterTypes type, string filterId) { ThingItemFilterCategory result = _filters.FirstOrDefault(f => f.FilterType == type); ThingItemFilter filter = result?.Filters.FirstOrDefault(f => f.Id.Equals(filterId)); if (filter == null) { return; } filter.Active = false; }