Esempio n. 1
0
        /// <summary>
        /// Updates any UI elements.
        /// </summary>
        /// <returns>Whether or not we should block mouse actions when updating entities.</returns>
        public bool Update()
        {
            foreach (var element in _elements)
            {
                if (element.Active && element is IUIFocusable)
                {
                    var focusable = element as IUIFocusable;

                    if (focusable.Focused)
                    {
                        focusable.FocusUpdate();
                    }
                }
            }

            // TODO: Check other mouse buttons.
            var mouseState    = Mouse.GetState();
            var mousePosition = mouseState.GetPosition();
            var mouseButton   = mouseState.GetButtonUp(MouseButtons.LeftButton) ? MouseButtons.LeftButton : MouseButtons.None;
            var e             = new UIMouseEventData(mousePosition, mouseButton);

            var block = false;

            foreach (var element in _elements)
            {
                block |= UpdateHelper(element, e);
            }

            _elements.RemoveAll(element => element.Deleted);

            return(block);
        }
Esempio n. 2
0
        private bool UpdateHelper(UIElement element, UIMouseEventData e)
        {
            var block = false;

            if (element.Active && !element.Deleted)
            {
                if (element is IUIClickable)
                {
                    var clickable = element as IUIClickable;

                    if (clickable.CheckMouseOver(e.Position))
                    {
                        clickable.MousedOver = true;
                        block = clickable.MouseOver(e);
                    }
                    else
                    {
                        if (clickable.MousedOver)
                        {
                            clickable.MouseOut(e);
                        }
                        clickable.MousedOver = false;
                    }


                    if (e.Button == MouseButtons.LeftButton && clickable.CheckReleased(e))
                    {
                        clickable.Click(e);
                    }
                }

                if (element is IUIFocusable)
                {
                    var focusable = element as IUIFocusable;

                    if (focusable.Focused)
                    {
                        focusable.FocusUpdate();
                    }
                }
            }

            foreach (var child in element.Children)
            {
                block |= UpdateHelper(child, e);
            }

            return(block);
        }