示例#1
0
            public static TrieNode loadFromStream(System.IO.StreamReader reader, Func <string, LeafElement> parser)
            {
                TrieNode    result        = new TrieNode();
                var         elementString = readTillDelimiter(reader, '{');
                LeafElement element       = default;

                if (elementString != "")
                {
                    element           = parser.Invoke(elementString);
                    result.hasElement = true;
                }
                result.element = element;
                var delim       = (char)reader.Read();           //skipes the opening bracket
                var countString = readTillDelimiter(reader, ';');
                int count       = (countString.Length > 0 ? int.Parse(countString) : 0);

                delim = (char)reader.Read();                 //skipes the ;
                for (int i = 0; i < count; i++)
                {
                    char     key       = (char)reader.Read();
                    TrieNode successor = loadFromStream(reader, parser);
                    result.successors.Add(key, successor);
                    delim = (char)reader.Read();                //skipes the mid
                }
                delim = (char)reader.Read();                    //skipes the closing bracket
                return(result);
            }
示例#2
0
 public void setElement(LeafElement element)
 {
     if (this.hasElement && !this.element.Equals(element))
     {
         LeafElement min = this.element.CompareTo(element) < 0 ? this.element : element;
         //throw new Exception();
         this.element = min;
     }
     else
     {
         this.element = element;
     }
     this.hasElement = true;
 }
示例#3
0
        private static RectTransform HandleLeafElement(LeafElement element, ref int index)
        {
            ContextMenuUIElement uiElement = GetContextMenuUIElement(index);

            uiElement.rectTransform.SetParent(null);
            uiElement.rectTransform.gameObject.SetActive(true);

            uiElement.icon.gameObject.SetActive(element.icon != null);
            uiElement.icon.sprite = element.icon;
            uiElement.icon.color  = element.icon != null ? element.iconColor : Color.clear;
            uiElement.childIcon.gameObject.SetActive(false);
            uiElement.text.rectTransform.offsetMax = Vector2.zero;

            uiElement.text.text = element.text;
            uiElement.rectTransform.gameObject.name = element.text;
            uiElement.button.onClick = new Button.ButtonClickedEvent();
            uiElement.button.onClick.AddListener(() =>
            {
                element.onClick(element.parameter);
                HideContextMenu();
            });
            ++index;
            return(uiElement.rectTransform);
        }
示例#4
0
 public TrieNode()
 {
     this.hasElement = false;
     this.successors = new Dictionary <char, TrieNode>();
     this.element    = default;
 }