Exemplo n.º 1
0
        public TextMenuItem CreateItem(string text, string name)
        {
            var item = new TextMenuItem(this, text);

            _items.Add(item);

            item.Name = name;
            if (item.Name == null)
            {
                item.Name = text.Replace(' ', '_').ToLowerInvariant();
            }

            return(item);
        }
Exemplo n.º 2
0
        private Color GetItemColor(TextMenuItem item)
        {
            var color = Color;

            if (!item.IsEnabled)
            {
                color = ColorDisabled;
            }
            else if (item.IsHovered)
            {
                color = ColorHover;
            }

            return(color);
        }
Exemplo n.º 3
0
        public void Update(GameTime time, IMouseManager mouse)
        {
            TextMenuItem currentHoveredItem = null;

            var currentPos = Pos;

            foreach (var item in _items)
            {
                currentPos = currentPos.Offset(item.Margin.Left, item.Margin.Top);

                var rect      = item.GetScreenRect(currentPos);
                var isHovered = rect.Contains(mouse.Position);

                item.IsHovered = isHovered;

                if (item.IsHovered)
                {
                    currentHoveredItem = item;

                    if (_lastHoverItem != item)
                    {
                        _lastHoverItem = item;
                        if (ItemHovered != null)
                        {
                            ItemHovered(item);
                        }
                    }
                }

                if (item.IsHovered && mouse.IsButtonPressed(MouseButton.Left) && item.IsEnabled)
                {
                    if (ItemClicked != null)
                    {
                        ItemClicked(item);
                    }

                    item.RaiseClicked();
                }

                currentPos = currentPos.Offset(0f, _font.Data.LineHeight + Padding + item.Margin.Bottom);
            }

            if (currentHoveredItem == null)
            {
                _lastHoverItem = null;
            }
        }