public bool ActiveItem(SelectionItemTraits item) { var itemTraits = traits .Where(t => t.Value.items.Contains(item)).ToList(); var itemTraitKeys = itemTraits.Select(t => t.Key).ToSet(); bool hasAllSelectedTraits = traits .Where(st => st.Value.selected) .Select(st => st.Key) .All(selectedTrait => itemTraitKeys.Contains(selectedTrait)); if (!hasAllSelectedTraits) { return(false); } switch (_filterMode) { case TraitGroupFilterMode.AtLeastOneSelected: { var noneSelected = NoneSelected(); bool atLeastOneNotExcludedSelected = itemTraits .Where(t => !t.Value.excluded) .Any(t => noneSelected || t.Value.selected); return(atLeastOneNotExcludedSelected); } case TraitGroupFilterMode.Strict: default: { bool noneExcluded = !itemTraits.Any(t => t.Value.excluded); return(noneExcluded); } } }
protected override float DrawItem(SelectionItemTraits item, Transform transform, float offset) { string key = item.GetKey(); UIElement ui = new UIElement(transform); ui.SetLocation(0, offset, 18.9f, 1); if (key != null) { ui.SetButton(delegate { SelectItem(key); }); } ui.SetBGColor(item.GetColor()); ui.SetText(item.GetDisplay(), Color.black); ui = new UIElement(transform); ui.SetLocation(19, offset, 1, 1); if (key != null) { ui.SetButton(delegate { Play(key); }); } ui.SetBGColor(new Color(0.6f, 0.6f, 1)); ui.SetText("►", Color.black); // this character is strange ui.SetFontSize(Mathf.RoundToInt((float)UIScaler.GetSmallFont() * 0.5f)); return(offset + 1.05f); }
protected override float DrawItem(SelectionItemTraits item, Transform transform, float offset) { string key = item.GetKey(); UIElement ui = new UIElement(transform); ui.SetLocation(0, offset, 18.9f, 1); var audioFilePath = FindAudioPathIfExists(key); ui.SetButton(delegate { SelectItem(key ?? ""); }); ui.SetBGColor(item.GetColor()); ui.SetText(item.GetDisplay(), Color.black); ui = new UIElement(transform); ui.SetLocation(19, offset, 1, 1); ui.SetButton(delegate { Play(key); }); var rightButtonColor = !string.IsNullOrEmpty(audioFilePath) ? AVAILABLE_COLOR : UNAVAILABLE_COLOR; ui.SetBGColor(rightButtonColor); var buttonText = !string.IsNullOrEmpty(audioFilePath) ? "►" : "■"; ui.SetText(buttonText, Color.black); // this character is strange ui.SetFontSize(Mathf.RoundToInt((float)UIScaler.GetSmallFont() * 0.5f)); return(offset + 1.05f); }
public void AddTraits(SelectionItemTraits item) { foreach (string trait in item.GetTraits()[_name]) { if (!traits.ContainsKey(trait)) { traits.Add(trait, new Trait()); } } }
public void AddItem(SelectionItemTraits item) { if (!item.GetTraits().ContainsKey(_name)) { ungrouped.Add(item); } else { foreach (string s in item.GetTraits()[_name]) { traits[s].items.Add(item); } } }
protected virtual float DrawItem(SelectionItemTraits item, Transform transform, float offset) { string key = item.GetKey(); UIElement ui = new UIElement(transform); ui.SetLocation(0, offset, 20, 1); if (key != null) { ui.SetButton(delegate { SelectItem(key); }); } ui.SetBGColor(item.GetColor()); ui.SetText(item.GetDisplay(), Color.black); return(offset + 1.05f); }
override public void Draw() { foreach (SelectionItem item in items) { SelectionItemTraits itemT = item as SelectionItemTraits; if (itemT == null) { traitItems.Add(new SelectionItemTraits(item)); } else { traitItems.Add(itemT); } } foreach (SelectionItemTraits item in traitItems) { foreach (string category in item.GetTraits().Keys) { bool found = false; foreach (TraitGroup tg in traitData) { if (tg.GetName().Equals(category)) { found = true; tg.AddTraits(item); } } if (!found) { TraitGroup tg = new TraitGroup(category); tg.AddTraits(item); traitData.Add(tg); } } } foreach (SelectionItemTraits item in traitItems) { foreach (TraitGroup tg in traitData) { tg.AddItem(item); } } Update(); }
public bool ActiveItem(SelectionItemTraits item) { if (NoneSelected()) { return(true); } foreach (Trait t in traits.Values) { if (t.selected && !t.items.Contains(item)) { return(false); } } return(true); }
private void AddTraitItem(SelectionItemTraits traitItem) { allItems.Add(traitItem); if (traitItem.AlwaysOnTop) { alwaysOnTopTraitItems.Add(traitItem.GetDisplay(), traitItem); return; } string key = traitItem.GetDisplay(); int duplicateIndex = 0; while (alphaTraitItems.ContainsKey(key)) { key = traitItem.GetDisplay() + "_" + duplicateIndex++; } traitItems.Add(traitItems.Count, traitItem); alphaTraitItems.Add(key, traitItem); }
public bool ActiveItem(SelectionItemTraits item) { foreach (Trait t in traits.Values) { if (t.items.Contains(item)) { if (t.excluded) { // item contains excluded trait return(false); } } else { if (t.selected && !NoneSelected()) { // item does not contain selected trait return(false); } } } return(true); }