package im.expensive.ui.display.impl;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.matrix.MatrixStack;
import im.expensive.events.EventDisplay;
import im.expensive.events.EventUpdate;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.font.Fonts;
import net.minecraft.client.Minecraft;
import net.minecraft.util.ResourceLocation;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
@FieldDefaults(level = AccessLevel.PRIVATE)
public class WatermarkRenderer implements ElementRenderer {
final Dragging dragging;
final BooleanSetting dragEnabled;
final Minecraft mc = Minecraft.getInstance();
private static final ResourceLocation LOGO =
new ResourceLocation("expensive/images/pulse1.png");
public WatermarkRenderer(Dragging dragging, BooleanSetting dragEnabled) {
this.dragging = dragging;
this.dragEnabled = dragEnabled;
}
@Subscribe
public void update(EventUpdate e) {
if (dragEnabled.get()) {
dragging.update();
}
}
@Override
public void render(EventDisplay e) {
if (mc.player == null || mc.world == null) return;
MatrixStack ms = e.getMatrixStack();
float x = dragEnabled.get() ? dragging.getX() : 15f;
float y = dragEnabled.get() ? dragging.getY() : 15f;
float height = 24f;
float radius = 4f;
float logoSize = 23f;
float paddingLeft = 5f;
float logoPadding = 2f;
float paddingRight = 4f;
float statsPadding = 5f;
String title = "Pulse Visuals";
String subtitle = "PulseVisuals.pro";
float titleSize = 7.5f;
float subSize = 5.3f;
float statsSize = 5.3f;
float titleWidth = Fonts.sfui.getWidth(title, titleSize);
float subWidth = Fonts.sfui.getWidth(subtitle, subSize);
float textWidth = Math.max(titleWidth, subWidth);
int fps = mc.getDebugFPS();
int ping = MathUtil.calculatePing();
String pingText = ping + " ms";
String fpsText = fps + " fps";
float pingTextWidth = Fonts.sfui.getWidth(pingText, statsSize);
float fpsTextWidth = Fonts.sfui.getWidth(fpsText, statsSize);
float statsTextWidth = Math.max(pingTextWidth, fpsTextWidth);
float width = logoSize + logoPadding + paddingLeft + textWidth + statsPadding + statsTextWidth + paddingRight;
//цвета для пастерков
int bgColor = ColorUtils.rgb(36, 36, 36);
int textColor = ColorUtils.rgb(255, 255, 255);
int pingColor = ping < 80 ? ColorUtils.rgb(0, 255, 120) :
ping < 150 ? ColorUtils.rgb(255, 200, 0) :
ColorUtils.rgb(255, 80, 80);
int fpsColor = ColorUtils.rgb(80, 160, 255);
DisplayUtils.drawRoundedRect(x, y, width, height, radius, bgColor);
DisplayUtils.drawImage(
LOGO,
x + logoPadding,
y + (height - logoSize) / 2f,
logoSize,
logoSize,
ColorUtils.rgb(255, 255, 255)
);
float textX = x + logoSize + logoPadding + paddingLeft;
float titleY = y + (height - titleSize) / 2f - 3;
float subY = y + (height - subSize) / 2f + 4f;
Fonts.sfui.drawText(ms, title, textX, titleY, textColor, titleSize);
Fonts.sfui.drawText(ms, subtitle, textX, subY, textColor, subSize);
float statsRightX = x + width - paddingRight;
float pingY = titleY;
Fonts.sfui.drawText(ms, pingText, statsRightX - pingTextWidth, pingY, pingColor, statsSize);
float fpsY = subY;
Fonts.sfui.drawText(ms, fpsText, statsRightX - fpsTextWidth, fpsY, fpsColor, statsSize);
//если тут ошибка то в HUD замените свой код на мою прошлую тему
if (dragEnabled.get()) {
dragging.setWidth(width);
dragging.setHeight(height);
}
}
}