Skip to content

Commit

Permalink
feat: special text element api (#327)
Browse files Browse the repository at this point in the history
  • Loading branch information
Snownee committed Nov 4, 2023
1 parent abead32 commit 1c2047a
Show file tree
Hide file tree
Showing 10 changed files with 80 additions and 55 deletions.
Expand Up @@ -33,7 +33,6 @@
import snownee.jade.api.ui.IElement;
import snownee.jade.api.ui.IElement.Align;
import snownee.jade.api.ui.IElementHelper;
import snownee.jade.impl.ui.SubTextElement;
import snownee.jade.util.ClientProxy;
import snownee.jade.util.CommonProxy;

Expand Down Expand Up @@ -137,7 +136,12 @@ public List<IElement> getText(BlockAccessor accessor, IPluginConfig config) {
if (state.requiresCorrectToolForDrops() || canHarvest) {
IThemeHelper t = IThemeHelper.get();
Component text = canHarvest ? t.success(CHECK) : t.danger(X);
elements.add(new SubTextElement(text).translate(new Vec2(-3, 7 + offsetY)));
elements.add(IElementHelper.get().textElement(text)
.scale(0.75F)
.zOffset(800)
.size(Vec2.ZERO)
.translate(new Vec2(-3, 6.25F + offsetY))
);
}
}

Expand Down
Expand Up @@ -47,7 +47,6 @@
import snownee.jade.impl.WailaCommonRegistration;
import snownee.jade.impl.config.PluginConfig;
import snownee.jade.impl.ui.HorizontalLineElement;
import snownee.jade.impl.ui.ScaledTextElement;
import snownee.jade.util.CommonProxy;
import snownee.jade.util.WailaExceptionHandler;

Expand Down Expand Up @@ -106,7 +105,7 @@ public static void append(ITooltip tooltip, Accessor<?> accessor, IPluginConfig
if (renderGroup) {
theTooltip.add(new HorizontalLineElement());
if (group.title != null) {
theTooltip.append(new ScaledTextElement(group.title, 0.5F));
theTooltip.append(helper.textElement(group.title).scale(0.5F));
theTooltip.append(new HorizontalLineElement());
}
}
Expand Down
Expand Up @@ -21,7 +21,6 @@
import snownee.jade.api.view.ViewGroup;
import snownee.jade.impl.WailaClientRegistration;
import snownee.jade.impl.WailaCommonRegistration;
import snownee.jade.impl.ui.ScaledTextElement;

public enum ProgressProvider implements IBlockComponentProvider, IServerDataProvider<BlockAccessor> {

Expand All @@ -46,7 +45,7 @@ public static void append(ITooltip tooltip, Accessor<?> accessor, IPluginConfig
}
for (var view : group.views) {
if (view.text != null) {
theTooltip.add(new ScaledTextElement(view.text, 0.75F));
theTooltip.add(helper.textElement(view.text).scale(0.75F));
theTooltip.setLineMargin(-1, Direction2D.DOWN, 0);
}
theTooltip.add(helper.progress(view.progress, null, view.style, boxStyle, false).size(new Vec2(10, 2)));
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/snownee/jade/api/ui/IElementHelper.java
Expand Up @@ -17,6 +17,9 @@ static IElementHelper get() {

IElement text(Component component);

//TODO (1.21): Remove this and make text() return ITextElement
ITextElement textElement(Component component);

IElement spacer(int x, int y);

IElement item(ItemStack itemStack);
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/snownee/jade/api/ui/ITextElement.java
@@ -0,0 +1,10 @@
package snownee.jade.api.ui;

public interface ITextElement extends IElement {

ITextElement scale(float scale);

ITextElement zOffset(int zOffset);

ITextElement centered();

This comment has been minimized.

Copy link
@Speiger

Speiger Nov 4, 2023

What if we want right alignment?

}
3 changes: 1 addition & 2 deletions src/main/java/snownee/jade/api/view/ClientViewGroup.java
Expand Up @@ -16,7 +16,6 @@
import snownee.jade.api.ui.IElementHelper;
import snownee.jade.api.ui.MessageType;
import snownee.jade.impl.ui.HorizontalLineElement;
import snownee.jade.impl.ui.ScaledTextElement;

public class ClientViewGroup<T> {

Expand Down Expand Up @@ -80,7 +79,7 @@ public boolean shouldRenderGroup() {
public void renderHeader(ITooltip tooltip) {
if (title != null) {
tooltip.add(new HorizontalLineElement());
tooltip.append(new ScaledTextElement(title, 0.5F));
tooltip.append(IElementHelper.get().textElement(title).scale(0.5F));
tooltip.append(new HorizontalLineElement());
}
// else if (bgColor == 0) {
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/snownee/jade/impl/ui/ElementHelper.java
Expand Up @@ -15,6 +15,7 @@
import snownee.jade.api.ui.IBoxElement;
import snownee.jade.api.ui.IElement;
import snownee.jade.api.ui.IElementHelper;
import snownee.jade.api.ui.ITextElement;
import snownee.jade.api.ui.ProgressStyle;
import snownee.jade.impl.Tooltip;

Expand All @@ -31,6 +32,11 @@ public IElement text(Component component) {
return new TextElement(component);
}

@Override
public ITextElement textElement(Component component) {
return new TextElement(component);
}

@Override
public IElement item(ItemStack stack) {
return ItemStackElement.of(stack);
Expand Down
@@ -1,24 +1,24 @@
package snownee.jade.impl.ui;

import org.jetbrains.annotations.Nullable;

import com.mojang.blaze3d.vertex.PoseStack;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.FormattedText;
import net.minecraft.world.phys.Vec2;
import snownee.jade.api.theme.IThemeHelper;
import snownee.jade.api.ui.ITextElement;
import snownee.jade.overlay.DisplayHelper;

public class ScaledTextElement extends TextElement {
public class SpecialTextElement extends TextElement {

public final float scale;
private float scale = 1;
private int zOffset;
private boolean centered;

public ScaledTextElement(Component component, float scale) {
super(component);
this.scale = scale;
public SpecialTextElement(FormattedText text) {
super(text);
}

@Override
Expand All @@ -31,15 +31,36 @@ public Vec2 getSize() {
public void render(GuiGraphics guiGraphics, float x, float y, float maxX, float maxY) {
PoseStack matrixStack = guiGraphics.pose();
matrixStack.pushPose();
matrixStack.translate(x, y + scale, 0);
Font font = Minecraft.getInstance().font;
if (centered) {
x += (maxX - x - font.width(text) * scale) / 2;
}
matrixStack.translate(x, y + scale, zOffset);
matrixStack.scale(scale, scale, 1);
DisplayHelper.INSTANCE.drawText(guiGraphics, text, 0, 0, IThemeHelper.get().getNormalColor());
matrixStack.popPose();
}

@Override
public @Nullable String getMessage() {
return text.getString();
public SpecialTextElement toSpecial() {
return this;
}

@Override
public ITextElement scale(float scale) {
this.scale = scale;
return this;
}

@Override
public ITextElement zOffset(int zOffset) {
this.zOffset = zOffset;
return this;
}

@Override
public ITextElement centered() {
this.centered = true;
return this;
}
}
35 changes: 0 additions & 35 deletions src/main/java/snownee/jade/impl/ui/SubTextElement.java

This file was deleted.

21 changes: 20 additions & 1 deletion src/main/java/snownee/jade/impl/ui/TextElement.java
Expand Up @@ -10,9 +10,10 @@
import net.minecraft.world.phys.Vec2;
import snownee.jade.api.theme.IThemeHelper;
import snownee.jade.api.ui.Element;
import snownee.jade.api.ui.ITextElement;
import snownee.jade.overlay.DisplayHelper;

public class TextElement extends Element {
public class TextElement extends Element implements ITextElement {

public final FormattedText text;

Expand Down Expand Up @@ -40,4 +41,22 @@ public void render(GuiGraphics guiGraphics, float x, float y, float maxX, float
return text.getString();
}

public SpecialTextElement toSpecial() {
return new SpecialTextElement(text);
}

@Override
public ITextElement scale(float scale) {
return toSpecial().scale(scale);
}

@Override
public ITextElement zOffset(int zOffset) {
return toSpecial().zOffset(zOffset);
}

@Override
public ITextElement centered() {
return toSpecial().centered();
}
}

0 comments on commit 1c2047a

Please sign in to comment.