package im.twestyy.ui.display.impl;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.sun.jna.platform.unix.X11;
import im.twestyy.Expensive;
import im.twestyy.events.EventDisplay;
import im.twestyy.functions.api.Function;
import im.twestyy.ui.display.ElementRenderer;
import im.twestyy.ui.styles.Style;
import im.twestyy.utils.client.KeyStorage;
import im.twestyy.utils.drag.Dragging;
import im.twestyy.utils.render.ColorUtils;
import im.twestyy.utils.render.DisplayUtils;
import im.twestyy.utils.render.Scissor;
import im.twestyy.utils.render.font.Fonts;
import im.twestyy.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class KeyBindRenderer implements ElementRenderer {
final Dragging dragging;
float width;
float height;
@Override
public void render(EventDisplay eventDisplay) {
MatrixStack ms = eventDisplay.getMatrixStack();
float posX = dragging.getX();
float posY = dragging.getY();
float fontSize = 7f;
float padding = 5;
String name = "Keybinds";
Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
drawClientRectangle(posX, posY, width, height, 4);
Scissor.push();
Scissor.setFromComponentCoordinates(posX, posY, width, height);
Fonts.relbold.drawCenteredText(ms, name, posX + width / 2, posY + padding - 1f, ColorUtils.rgb(255, 255, 255), 10, .05f);
posY += fontSize + padding * 2;
float maxWidth = Fonts.sfregular.getWidth(name, fontSize) + padding * 2;
float localHeight = fontSize + padding * 2;
posY += 3f;
for (Function f : Expensive.getInstance().getFunctionRegistry().getFunctions()) {
f.getAnimation().update();
if (!(f.getAnimation().getValue() > 0) || f.getBind() == 0) continue;
String nameText = f.getName();
float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize);
String bindText = "[" + KeyStorage.getKey(f.getBind()) + "]";
float bindWidth = Fonts.sfregular.getWidth(bindText, fontSize);
float localWidth = nameWidth + bindWidth + padding * 8;
Fonts.sfregular.drawText(ms, nameText, posX + padding, posY + 2f, ColorUtils.rgba(210, 210, 210, (int) (255 * f.getAnimation().getValue())), fontSize, .15f);
Fonts.sfregular.drawText(ms, bindText, posX + width - padding - bindWidth, posY + 2f, ColorUtils.rgba(210, 210, 210, (int) (255 * f.getAnimation().getValue())), fontSize, .15f);
if (localWidth > maxWidth) {
maxWidth = localWidth;
}
posY += (float) ((fontSize + padding) * f.getAnimation().getValue());
localHeight += (float) ((fontSize + padding) * f.getAnimation().getValue());
}
Scissor.unset();
Scissor.pop();
width = Math.max(maxWidth, 80);
height = localHeight + 8f;
dragging.setWidth(width);
dragging.setHeight(height);
}
private void drawClientRectangle(float x, float y, float width, float height, float radius) {
DisplayUtils.gradientrect(x, y, width, height, 6);
DisplayUtils.drawShadow(x, y, width, height, 8, ColorUtils.getColor(0));
float fixсукаYPosition = y + 17;
DisplayUtils.drawRoundedRect(x + 1.5f, fixсукаYPosition, width - 3, height - 18, new Vector4f(1, 5, 1, 5), ColorUtils.rgb(0, 0, 0));
}
}