public TraitList(string title, TraitTypeFilter filter, params string[] names) { this.title = title; this.filter = filter; this.names = names.ToList(); }
private static bool filterPasses(TraitTypeFilter filter, GurpsProperty property) { switch (filter) { case TraitTypeFilter.Locked: return true; case TraitTypeFilter.Skills: return property is AbstractSkill && !((AbstractSkill)property).category; case TraitTypeFilter.Advantages: return property is Advantage && isAdvantageNonNegative((Advantage)property); case TraitTypeFilter.Disadvantages: return property is Advantage && !isAdvantageNonNegative((Advantage)property); } throw null; }
private IEnumerable<GurpsProperty> internalSearch(string query, TraitTypeFilter filter, GurpsCharacter character) { var dontInclude = new HashSet<string>(character.layout.getNames()); var words = query.ToLower().Split(' '); foreach (GurpsProperty property in nameToThing.Values) { if (!filterPasses(filter, property)) continue; if (dontInclude.Contains(property.name)) continue; var nameToLower = property.DisplayName.ToLower(); if (words.All((word) => nameToLower.Contains(word))) yield return property; } }
public List<GurpsProperty> search(string query, TraitTypeFilter filter, GurpsCharacter character) { return new List<GurpsProperty>(order(internalSearch(query, filter, character))); }