Beispiel #1
0
        public override void Draw()
        {
            if (base.screenVisible)
            {
                _size = UiStateManager.MeasureString(text);

                //Draw the button
                if (enabled)
                {
                    UiTexture img = TextureManager.GetUiUv("button_neutral");
                    if (isHovered && Parent.FocusedComponent != null && Parent.FocusedComponent == this)
                    {
                        if (isClicked)
                        {
                            img = TextureManager.GetUiUv("button_clicked");
                        }
                        else
                        {
                            img = TextureManager.GetUiUv("button_hover");
                        }
                    }
                    UiStateManager.Draw9SplicedButton(img, this);
                    UiStateManager.DrawText(location.X + size.X / 2 - _size.X / 2, location.Y + size.Y / 2 - _size.Y / 2, buttonColor, text);
                }
                else
                {
                    UiTexture img = TextureManager.GetUiUv("button_disabled");
                    UiStateManager.Draw9SplicedButton(img, this);
                    UiStateManager.DrawText(location.X + size.X / 2 - _size.X / 2, location.Y + size.Y / 2 - _size.Y / 2, buttonDisabledColor, text);
                }
            }
        }
        public static void Draw9SplicedButton(UiTexture buttonTex, Point size, Point location)
        {
            int sizePaddingX = 3 * GameSettings.UIScale;
            int sizePaddingY = 3 * GameSettings.UIScale;

            int sizeCenterX = size.X - 2 * sizePaddingX;
            int sizeCenterY = size.Y - 2 * sizePaddingY;

            int paddingX = (int)(buttonTex.UV.Width * 0.046875f);
            int paddingY = (int)(buttonTex.UV.Height * 0.1875f);
            int centerX  = buttonTex.UV.Width - 2 * paddingX;
            int centerY  = buttonTex.UV.Height - 2 * paddingY;

            //TopLeft
            DrawImage(new Rectangle(location.X, location.Y, sizePaddingX, sizePaddingY),
                      new Rectangle(buttonTex.UV.X, buttonTex.UV.Y, paddingX, paddingY), buttonTex.texture);

            //TopCenter
            DrawImage(new Rectangle(location.X + sizePaddingX, location.Y, sizeCenterX, sizePaddingY),
                      new Rectangle(buttonTex.UV.X + paddingX, buttonTex.UV.Y, centerX, paddingY), buttonTex.texture);

            //TopRight
            DrawImage(new Rectangle(location.X + sizeCenterX + sizePaddingX, location.Y, sizePaddingX, sizePaddingY),
                      new Rectangle(buttonTex.UV.X + buttonTex.UV.Width - paddingX, buttonTex.UV.Y, paddingX, paddingY), buttonTex.texture);

            //CenterLeft
            DrawImage(new Rectangle(location.X, location.Y + sizePaddingY, sizePaddingX, sizeCenterY),
                      new Rectangle(buttonTex.UV.X, buttonTex.UV.Y + paddingY, paddingX, centerY), buttonTex.texture);

            //CenterCenter
            DrawImage(new Rectangle(location.X + sizePaddingX, location.Y + sizePaddingY, sizeCenterX, sizeCenterY),
                      new Rectangle(buttonTex.UV.X + paddingX, buttonTex.UV.Y + paddingY, centerX, centerY), buttonTex.texture);

            //CenterRight
            DrawImage(new Rectangle(location.X + sizeCenterX + sizePaddingX, location.Y + sizePaddingY, sizePaddingX, sizeCenterY),
                      new Rectangle(buttonTex.UV.X + buttonTex.UV.Width - paddingX, buttonTex.UV.Y + paddingY, paddingX, centerY), buttonTex.texture);
            //BottomLeft
            DrawImage(new Rectangle(location.X, location.Y + sizePaddingY + sizeCenterY, sizePaddingX, sizePaddingY),
                      new Rectangle(buttonTex.UV.X, buttonTex.UV.Y + centerY + paddingY, paddingX, paddingY), buttonTex.texture);

            //BottomCenter
            DrawImage(new Rectangle(location.X + sizePaddingX, location.Y + sizePaddingY + sizeCenterY, sizeCenterX, sizePaddingY),
                      new Rectangle(buttonTex.UV.X + paddingX, buttonTex.UV.Y + centerY + paddingY, centerX, paddingY), buttonTex.texture);

            //BottomRight
            DrawImage(new Rectangle(location.X + sizeCenterX + sizePaddingX, location.Y + sizePaddingY + sizeCenterY, sizePaddingX, sizePaddingY),
                      new Rectangle(buttonTex.UV.X + buttonTex.UV.Width - paddingX, buttonTex.UV.Y + centerY + paddingY, paddingX, paddingY), buttonTex.texture);
        }
        public override void Draw()
        {
            if (base.screenVisible)
            {
                _size = UiStateManager.MeasureString(text);

                UiTexture img = TextureManager.GetUiUv("button_disabled");
                UiStateManager.Draw9SplicedButton(img, this);

                //Draw the button
                if (enabled)
                {
                    img = TextureManager.GetUiUv("button_neutral");
                    if (isHovered && Parent.FocusedComponent != null && Parent.FocusedComponent == this)
                    {
                        if (isClicked)
                        {
                            img = TextureManager.GetUiUv("button_clicked");
                        }
                        else
                        {
                            img = TextureManager.GetUiUv("button_hover");
                        }
                    }
                    if (isSliding)
                    {
                        UiStateManager.Draw9SplicedButton(img, new Point(HandleWidth * GameSettings.UIScale, size.Y), new Point(FastMath.FastClamp(InputManager.MouseX + MouseOffset.X, location.X, location.X + size.X - HandleWidth * GameSettings.UIScale), location.Y));
                    }
                    else
                    {
                        //location.X = component.location.X + % of slider value * component.size.X
                        handleX = FastMath.FastClamp(location.X + (_value * size.X / (_maxValue - _minValue)), location.X, location.X + size.X - HandleWidth * GameSettings.UIScale);
                        UiStateManager.Draw9SplicedButton(img, new Point(HandleWidth * GameSettings.UIScale, size.Y), new Point(handleX, location.Y));
                    }
                    UiStateManager.DrawText(location.X + size.X / 2 - _size.X / 2, location.Y + size.Y / 2 - _size.Y / 2, buttonColor, text);
                }
                else
                {
                    UiStateManager.Draw9SplicedButton(img, new Point(HandleWidth * GameSettings.UIScale, size.Y), new Point(FastMath.FastClamp(location.X + (_value * size.X / (_maxValue - _minValue)), location.X, location.X + size.X - HandleWidth * GameSettings.UIScale), location.Y));
                    UiStateManager.DrawText(location.X + size.X / 2 - _size.X / 2, location.Y + size.Y / 2 - _size.Y / 2, buttonDisabledColor, text);
                }
            }
        }
Beispiel #4
0
        public override void Draw()
        {
            if (screenVisible)
            {
                //If the uiscale updated, redraw the text

                //Background image
                UiTexture img = TextureManager.GetUiUv("button_disabled");
                UiStateManager.Draw9SplicedButton(img, this);

                //Check if we have text or we're focused
                if (text != "" || isEditing)
                {
                    bool caretVisible = caretTimer * 2 % caretAnimationTime > 0.5f;

                    DrawText(text, textColor, scrollPosition, caretPosition, caretVisible && isEditing);                     //Don't display the caret if we aren't editing
                }
                else
                {
                    //Placeholder
                    DrawText(placeholderText, placeholderColor, 0, -1, false);
                }
            }
        }
 public static void Draw9SplicedButton(UiTexture buttonTex, Component component)
 {
     Draw9SplicedButton(buttonTex, component.size, component.location);
 }