コード例 #1
0
            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);
                }
                }
            }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public void AddTraits(SelectionItemTraits item)
 {
     foreach (string trait in item.GetTraits()[_name])
     {
         if (!traits.ContainsKey(trait))
         {
             traits.Add(trait, new Trait());
         }
     }
 }
コード例 #5
0
 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);
         }
     }
 }
コード例 #6
0
        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);
        }
コード例 #7
0
        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();
        }
コード例 #8
0
            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);
            }
コード例 #9
0
        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);
        }
コード例 #10
0
 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);
 }