// Decompiled with JetBrains decompiler // Type: Terraria.DataStructures.EntryFilterer`2 // Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null // MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83 // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using System.Collections.Generic; using Terraria.Localization; namespace Terraria.DataStructures { public class EntryFilterer where T : new() where U : IEntryFilter { public List AvailableFilters; public List ActiveFilters; public List AlwaysActiveFilters; private ISearchFilter _searchFilter; private ISearchFilter _searchFilterFromConstructor; public EntryFilterer() { this.AvailableFilters = new List(); this.ActiveFilters = new List(); this.AlwaysActiveFilters = new List(); } public void AddFilters(List filters) => this.AvailableFilters.AddRange((IEnumerable) filters); public bool FitsFilter(T entry) { if (this._searchFilter != null && !this._searchFilter.FitsFilter(entry)) return false; for (int index = 0; index < this.AlwaysActiveFilters.Count; ++index) { if (!this.AlwaysActiveFilters[index].FitsFilter(entry)) return false; } if (this.ActiveFilters.Count == 0) return true; for (int index = 0; index < this.ActiveFilters.Count; ++index) { if (this.ActiveFilters[index].FitsFilter(entry)) return true; } return false; } public void ToggleFilter(int filterIndex) { U availableFilter = this.AvailableFilters[filterIndex]; if (this.ActiveFilters.Contains(availableFilter)) this.ActiveFilters.Remove(availableFilter); else this.ActiveFilters.Add(availableFilter); } public bool IsFilterActive(int filterIndex) => this.AvailableFilters.IndexInRange(filterIndex) && this.ActiveFilters.Contains(this.AvailableFilters[filterIndex]); public void SetSearchFilterObject(Z searchFilter) where Z : ISearchFilter, U => this._searchFilterFromConstructor = (ISearchFilter) searchFilter; public void SetSearchFilter(string searchFilter) { if (string.IsNullOrWhiteSpace(searchFilter)) { this._searchFilter = (ISearchFilter) null; } else { this._searchFilter = this._searchFilterFromConstructor; this._searchFilter.SetSearch(searchFilter); } } public string GetDisplayName() => Language.GetTextValueWith("BestiaryInfo.Filters", (object) new { Count = this.ActiveFilters.Count }); } }