Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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;
        }