package speiger.src.coreengine.rendering.gui.components; import java.util.function.IntFunction; import speiger.src.coreengine.math.misc.Facing; public class GradientSliderComponent extends SliderComponent { int fromColor; int toColor; Facing direction; public GradientSliderComponent(float x, float y, float width, float height, int min, int max, int value, int color, int fromColor, int toColor, Facing direction, IntFunction textBuilder) { super(x, y, width, height, min, max, value, color, textBuilder); this.direction = direction; this.fromColor = fromColor; this.toColor = toColor; } public GradientSliderComponent(int min, int max, int value, int color, int fromColor, int toColor, Facing direction, IntFunction textBuilder) { super(min, max, value, color, textBuilder); this.direction = direction; this.fromColor = fromColor; this.toColor = toColor; } @Override public boolean renderSelf(int mouseX, int mouseY, float particalTicks) { float brightness = getActiveBrightness(); float minX = getBox().getMinX(5F); float minY = getBox().getMinY(2F); float maxX = getBox().getMaxX(-5F); float maxY = getBox().getMaxY(-2F); float scale = 0.6F * getBox().getScale(); if(vertical) { float extra = (((float)(value - min) / (float)(max - min)) * (getBox().getMaxY(-3F) - getBox().getMinY(3F))) + getBox().getMinY(3F); float left = getBox().getMinX(2F); getRenderer().setBrightness(brightness).drawGradientQuad(minX, minY, maxX, maxY, fromColor, toColor, direction).setBrightness(brightness * 0.7F).drawFrame(minX, minY, maxX, maxY, 0.001F, color); getRenderer().setBrightness(brightness * 0.5F).translate(left, extra, 0.002F).scale(scale).drawBuffers(buffer, maxX - minX, maxX - minX).setBrightness(brightness).unscale(scale).translate(-left, -extra, -0.002F); } else { float extra = (((float)(value - min) / (float)(max - min)) * (getBox().getMaxX(-6F) - getBox().getMinX(6F))) + getBox().getMinX(6F); float top = getBox().getMinY(); getRenderer().setBrightness(brightness).drawGradientQuad(minX, minY, maxX, maxY, fromColor, toColor, direction).setBrightness(brightness * 0.7F).drawFrame(minX, minY, maxX, maxY, 0.001F, color); getRenderer().setBrightness(brightness * 0.5F).translate(extra, top, 0.002F).scale(scale).drawBuffers(buffer, maxX - minX, maxX - minX).setBrightness(brightness).unscale(scale).translate(-extra, -top, -0.002F); } getRenderer().setBrightness(getBrightness(mouseX, mouseY)); renderChildren(mouseX, mouseY, particalTicks); getRenderer().setBrightness(1F); return false; } }