Example #1
0
 public void Open(ProgrammableMenuNode firstNode = null)
 {
     if (IsShowing)
     {
         HideNode(menuStack.Peek(), null);
     }
     else
     {
         ShowMenuPanel();
     }
     if (firstNode == null)
     {
         firstNode = FirstNode;
     }
     if (firstNode == null)
     {
         Debug.LogErrorFormat(
             @"Programmable Menu System: 
             Please set ProgrammableMenuSystem.Instance.FirstNode 
             or pass it into Show() method!");
     }
     menuStack.Push(firstNode);
     ShowNode(firstNode, null);
     SelectButton(firstNode);
 }
Example #2
0
 public ProgrammableMenuNode OnDown(ProgrammableMenuNode other)
 {
     Debug.LogFormat("On down {0}", name);
     Down     = other;
     other.Up = this;
     return(this);
 }
Example #3
0
 private void ShowNode(ProgrammableMenuNode node, ProgrammableMenuNode parentNode)
 {
     if (node == null)
     {
         return;
     }
     node.gameObject.SetActive(true);
     RepositionNode(node, parentNode);
     if (node.Down != null && node.Down != parentNode)
     {
         ShowNode(node.Down, node);
     }
     if (node.Left != null && node.Left != parentNode)
     {
         ShowNode(node.Left, node);
     }
     if (node.Right != null && node.Right != parentNode)
     {
         ShowNode(node.Right, node);
     }
     if (node.Up != null && node.Up != parentNode)
     {
         ShowNode(node.Up, node);
     }
 }
Example #4
0
 private void SelectButton(ProgrammableMenuNode node = null)
 {
     if (node == null && menuStack.Count > 0)
     {
         node = menuStack.Peek();
     }
     if (node != null)
     {
         EventSystem.current.SetSelectedGameObject(node.gameObject);
     }
 }
Example #5
0
        private void RepositionNode(ProgrammableMenuNode node, ProgrammableMenuNode parentNode)
        {
            if (!RepositionButtons)
            {
                return;
            }

            if (parentNode == null)
            {
                node.RectTransform.anchoredPosition = MenuOffset;
                return;
            }
            var     parentPosition = parentNode.RectTransform.anchoredPosition;
            Vector2 offset;

            if (parentNode == node.Up)
            {
                offset = new Vector2(
                    0,
                    -parentNode.RectTransform.sizeDelta.y
                    - MenuItemGapVertical);
            }
            else if (parentNode == node.Down)
            {
                offset = new Vector2(
                    0,
                    parentNode.RectTransform.sizeDelta.y
                    + MenuItemGapVertical);
            }
            else if (parentNode == node.Left)
            {
                offset = new Vector2(
                    parentNode.RectTransform.sizeDelta.x
                    + MenuItemGapHorizontal,
                    0);
            }
            else if (parentNode == node.Right)
            {
                offset = new Vector2(
                    -parentNode.RectTransform.sizeDelta.x
                    - MenuItemGapHorizontal,
                    0);
            }
            else
            {
                offset = new Vector2(0, 0);
            }
            node.RectTransform.anchoredPosition = parentPosition + offset;
        }
Example #6
0
 private void ReloadNode(ProgrammableMenuNode node, ProgrammableMenuNode parentNode)
 {
     if (node == null)
     {
         return;
     }
     node.LoadText();
     if (node.Down != null && node.Down != parentNode)
     {
         ReloadNode(node.Down, node);
     }
     if (node.Left != null && node.Left != parentNode)
     {
         ReloadNode(node.Left, node);
     }
     if (node.Right != null && node.Right != parentNode)
     {
         ReloadNode(node.Right, node);
     }
     if (node.Up != null && node.Up != parentNode)
     {
         ReloadNode(node.Up, node);
     }
 }
Example #7
0
 private void HideNode(ProgrammableMenuNode node, ProgrammableMenuNode parentNode)
 {
     if (node == null)
     {
         return;
     }
     node.gameObject.SetActive(false);
     if (node.Down != null && node.Down != parentNode)
     {
         HideNode(node.Down, node);
     }
     if (node.Left != null && node.Left != parentNode)
     {
         HideNode(node.Left, node);
     }
     if (node.Right != null && node.Right != parentNode)
     {
         HideNode(node.Right, node);
     }
     if (node.Up != null && node.Up != parentNode)
     {
         HideNode(node.Up, node);
     }
 }
Example #8
0
 public ProgrammableMenuNode OnIn(ProgrammableMenuNode other)
 {
     In = other;
     return(this);
 }
Example #9
0
 public ProgrammableMenuNode OnRight(ProgrammableMenuNode other)
 {
     Right      = other;
     other.Left = this;
     return(this);
 }
Example #10
0
 public ProgrammableMenuNode OnUp(ProgrammableMenuNode other)
 {
     Up         = other;
     other.Down = this;
     return(this);
 }