예제 #1
0
        public override bool Draw(Rect rect)
        {
            if (_value < 0f)
            {
                return(false);
            }

            var percentage = _value / _max;

            var showLabel = Label != null;

            var grid = rect.GetHGrid(GUIPlus.TinyPadding, showLabel ? Theme.LabelWidth.Value : 0f, -1f, _valueStyle == ValueStyle.Hidden ? 0f : Theme.ValueWidth.Value);

            DrawText(grid[1], Label);
            GUIPlus.DrawBar(grid[2], percentage, GetBarColor(percentage));
            DrawThresholds(grid[2]);
            DrawValue(grid[3], _value, _max);

            if (Hud.IsMouseOverConfigButton)
            {
                return(true);
            }

            if (Widgets.ButtonInvisible(rect.ExpandedBy(GUIPlus.TinyPadding)))
            {
                _onClick?.Invoke();
            }
            if (Mouse.IsOver(rect))
            {
                GUIPlus.DrawTooltip(grid[0], Tooltip, false);
            }

            return(true);
        }
예제 #2
0
        public override bool Draw(Rect rect)
        {
            if (_value.NullOrEmpty() && (_fallbackValue == null))
            {
                return(false);
            }

            var showLabel = Label != null;

            var grid = rect.GetHGrid(GUIPlus.TinyPadding, showLabel ? Theme.LabelWidth.Value : 0f, -1f);

            GUIPlus.SetColor(_color);
            if (showLabel)
            {
                DrawText(grid[1], Label);
            }
            DrawText(grid[2], _value, alignment: showLabel?TextAnchor.MiddleRight: (TextAnchor?)null);
            if (!Hud.IsMouseOverConfigButton && Widgets.ButtonInvisible(rect.ExpandedBy(GUIPlus.TinyPadding)))
            {
                _onClick?.Invoke();
            }
            GUIPlus.ResetColor();

            if (!Hud.IsMouseOverConfigButton)
            {
                GUIPlus.DrawTooltip(grid[0], Tooltip, false);
            }
            return(true);
        }
예제 #3
0
        public bool Label(string label, TipSignal?tooltip = null, GameFont?font = null, Color?color = null, bool highlight = false)
        {
            GUIPlus.SetFont(font);
            GUIPlus.SetColor(color);

            var rect = GetRect(Text.CalcHeight(label, ColumnWidth));

            Widgets.Label(rect, label);
            GUIPlus.DrawTooltip(rect, tooltip, highlight);
            Gap(verticalSpacing);

            GUIPlus.ResetColor();
            GUIPlus.ResetFont();

            return(Widgets.ButtonInvisible(rect));
        }
예제 #4
0
        public void RangeSlider(RangeOption range, bool enabled = true)
        {
            GUIPlus.SetEnabledColor(enabled);

            var grid = GetRect(Text.LineHeight).GetHGrid(ElementPadding, LabelWidth, ValueWidth, -1f);

            GUIPlus.DrawText(grid[1], range.Label);
            GUIPlus.DrawText(grid[2], range.ToString());

            var value = Mathf.RoundToInt(Widgets.HorizontalSlider(grid[3], range.Value, range.Min, range.Max, true));

            if (enabled)
            {
                range.Value = value;
            }

            GUIPlus.DrawTooltip(grid[0], range.Tooltip, true);
            Gap(verticalSpacing);

            GUIPlus.ResetColor();
        }
예제 #5
0
        public override bool Draw(Rect rect)
        {
            if (_value < 0f)
            {
                return(false);
            }

            var percentage = _value / _max;

            var showLabel = Label != null;

            var grid = rect.GetHGrid(GUIPlus.TinyPadding, showLabel ? Theme.LabelWidth.Value : 0f, -1f, _valueStyle == ValueStyle.Hidden ? 0f : Theme.ValueWidth.Value);

            DrawText(grid[1], Label);
            GUIPlus.DrawBar(grid[2], percentage, GetBarColor(percentage));
            DrawThresholds(grid[2]);
            DrawValue(grid[3], _value, _max);

            GUIPlus.DrawTooltip(grid[0], Tooltip, false);
            return(true);
        }
예제 #6
0
        public override bool Draw(Rect rect)
        {
            if (_value.NullOrEmpty() && (_fallbackValue == null))
            {
                return(false);
            }

            var showLabel = Label != null;

            var grid = rect.GetHGrid(GUIPlus.TinyPadding, showLabel ? Theme.LabelWidth.Value : 0f, -1f);

            GUIPlus.SetColor(_color);
            if (showLabel)
            {
                DrawText(grid[1], Label);
            }
            DrawText(grid[2], _value, alignment: showLabel?TextAnchor.MiddleRight: (TextAnchor?)null);
            GUIPlus.ResetColor();

            GUIPlus.DrawTooltip(grid[0], Tooltip, false);
            return(true);
        }
예제 #7
0
        public void RangeSliderEntry(RangeOption range, ref string text, int id, bool enabled = true)
        {
            GUIPlus.SetEnabledColor(enabled);

            var grid = GetRect(Text.LineHeight).GetHGrid(ElementPadding, LabelWidth, ValueWidth, -1f);

            GUIPlus.DrawText(grid[1], range.Label);

            var entryName = "RangeSliderEntry_Text" + id;
            var isFocused = GUI.GetNameOfFocusedControl() == entryName;

            if (!isFocused)
            {
                text = range.Value.ToString();
            }

            GUI.SetNextControlName(entryName);
            var newText = Widgets.TextField(grid[2], text, 5, RangeSliderEntryRegex);

            if (enabled)
            {
                text = newText;
            }

            var textValue = text.ToInt();

            if (textValue.HasValue)
            {
                if (textValue.Value < range.Min)
                {
                    range.Value = range.Min;
                }
                else if (textValue.Value > range.Max)
                {
                    range.Value = range.Max;
                }
                else
                {
                    range.Value = textValue.Value;
                }
            }

            var sliderName = "RangeSliderEntry_Slider" + id;

            GUI.SetNextControlName(sliderName);
            var sliderValue = Mathf.RoundToInt(Widgets.HorizontalSlider(grid[3], range.Value, range.Min, range.Max, true));

            if (enabled && range.Value != sliderValue)
            {
                range.Value = sliderValue;
                text        = range.Value.ToString();
            }
            if (Widgets.ButtonInvisible(grid[3]))
            {
                GUI.FocusControl(sliderName);
            }

            GUIPlus.DrawTooltip(grid[0], range.Tooltip, true);
            Gap(verticalSpacing);

            GUIPlus.ResetColor();
        }