예제 #1
0
    private void Update()
    {
        switch (_states)
        {
        case States.MenuState:
            MenuTrigger?.Invoke();
            break;

        case States.GameState:
            GameTrigger?.Invoke();
            break;

        case States.PauseState:
            PauseTrigger?.Invoke();
            break;

        case States.GameOverState:
            GameOverTrigger?.Invoke();
            break;

        case States.None:
            break;

        default:
            break;
        }
    }
예제 #2
0
        void AutoCompleteTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            CheckIfTriggered();
            Rect position = this.GetRectFromCharacterIndex(this.SelectionStart - 1, true);

            if (_isTriggered)
            {
                popupMenu.Commands.Clear();
                string searchStr = this.Text.Substring(_triggerLocation, _triggerDistance)
                                   .TrimStart(MenuTrigger.ToCharArray()[0]);
                IEnumerable <string> items = _dictionary.Where(f => f.StartsWith(searchStr)).Take <string>(6);
                foreach (var item in items)
                {
                    popupMenu.Commands.Add(new UICommand(item, (IUICommand command) =>
                    {
                        var oldSelectionStart = this.SelectionStart;
                        string remainder      = command.Label.Substring(searchStr.Length);
                        var newSelectionStart = oldSelectionStart + remainder.Length;
                        this.Text             = this.Text.Insert(this.SelectionStart, remainder);
                        this.SelectionStart   = newSelectionStart;
                        _triggerLocation      = 0;
                        _triggerDistance      = 1;
                    }));
                }
                var transform = this.TransformToVisual((UIElement)this.Parent);
                var point     = transform.TransformPoint(new Point(position.Left, position.Bottom));
                try
                {
                    popupMenu.ShowForSelectionAsync(new Rect(point, point), Placement.Below).AsTask();
                }
                catch (InvalidOperationException ex)
                {
                }
            }
        }
예제 #3
0
 private void CheckIfTriggered()
 {
     if (this.SelectionStart > 0)
     {
         if (!_isTriggered)
         {
             _isTriggered = this.Text.Substring(this.SelectionStart -
                                                _triggerDistance, 1).EndsWith(MenuTrigger.ToString());
             if (_isTriggered)
             {
                 _triggerLocation = this.SelectionStart - _triggerDistance;
             }
         }
         else
         {
             _isTriggered = !this.Text.Substring(this.SelectionStart - 1, 1).Equals(" ");
             if (_isTriggered)
             {
                 _triggerDistance = this.SelectionStart - _triggerLocation;
             }
             else
             {
                 _triggerLocation = 0;
                 _triggerDistance = 1;
             }
         }
     }
 }
예제 #4
0
        //- Constructors
        public Menu(XmlNode menuNode)
        {
            Title = menuNode.Attributes["title"].Value;

            Options = new Dictionary <string, Tuple <string, IMenuItem, string> >();

            foreach (XmlNode menuItem in menuNode.ChildNodes)
            {
                if (menuItem.Name == "menu")
                {
                    SubMenu newSubMenu = new SubMenu(menuItem, this);
                    Options[menuItem.Attributes["title"].Value] = new Tuple <string, IMenuItem, string>(newSubMenu.Text, newSubMenu, newSubMenu.Image);
                }
                else if (menuItem.Name == "menu_option")
                {
                    MenuOption newMenuOption = new MenuOption(menuItem, this);
                    Options[menuItem.Attributes["name"].Value] = new Tuple <string, IMenuItem, string>(newMenuOption.Text, newMenuOption, newMenuOption.Image);
                }
                else if (menuItem.Name == "menu_trigger")
                {
                    MenuTrigger newMenuOption = new MenuTrigger(menuItem, this);
                    Options[menuItem.Attributes["name"].Value] = new Tuple <string, IMenuItem, string>(newMenuOption.Text, newMenuOption, newMenuOption.Image);
                }
            }
        }
예제 #5
0
    /**
     * Checks if there is any context menu around to open
     */
    private GameObject checkContextMenu()
    {
        GameObject[] objs        = GameObject.FindGameObjectsWithTag("Context Menu");
        GameObject   closest     = null;
        float        closestDist = float.MaxValue;

        foreach (GameObject obj in objs)
        {
            if (closest == null)  // to have something to compare with
            {
                closest     = obj;
                closestDist = Vector3.Distance(transform.position, obj.transform.position);
            }

            // Get the distance
            float compareDist = Vector3.Distance(transform.position, obj.transform.position);
            if (compareDist < closestDist)  // compare and overwrite it
            {
                closest     = obj;
                closestDist = compareDist;
            }
        }
        if (debugDraws)
        {
            Debug.DrawLine(transform.position, closest.transform.position, Color.red, 2f, false);
        }

        MenuTrigger trigger = closest.GetComponent <MenuTrigger>();

        if (trigger != null && closestDist <= trigger.triggerDistance)  // trigger tells the trigger distance
        {
            trigger.TriggerMenu();
            playerInput = false;
            // audioSource.PlayOneShot (openChest);
            // Debug.Log ("Chest opened");
        }
        else if (trigger == null)
        {
            Debug.Log("Trigger -> null");
        }
        return(closest);
    }