mirror of
https://github.com/Shiewk/Widgets.git
synced 2026-04-28 11:34:17 +02:00
Make all resizable widgets extend ResizableWidget
This will be very useful for adding new widgets
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package de.shiewk.widgets.widgets;
|
||||
|
||||
import de.shiewk.widgets.ModWidget;
|
||||
import de.shiewk.widgets.WidgetSettingOption;
|
||||
import de.shiewk.widgets.WidgetSettings;
|
||||
import de.shiewk.widgets.widgets.settings.EnumWidgetSetting;
|
||||
@@ -12,12 +11,11 @@ import net.minecraft.client.font.TextRenderer;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.joml.Matrix3x2fStack;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class BasicTextWidget extends ModWidget {
|
||||
public abstract class BasicTextWidget extends ResizableWidget {
|
||||
|
||||
public enum TextAlignment {
|
||||
RIGHT("right"),
|
||||
@@ -49,7 +47,6 @@ public abstract class BasicTextWidget extends ModWidget {
|
||||
list.add(new RGBAColorWidgetSetting("textcolor", Text.translatable("widgets.widgets.basictext.textcolor"), 255, 255, 255, 255));
|
||||
list.add(new IntSliderWidgetSetting("width", Text.translatable("widgets.widgets.basictext.width"), 10, DEFAULT_WIDTH, 80*3));
|
||||
list.add(new IntSliderWidgetSetting("height", Text.translatable("widgets.widgets.basictext.height"), 9, DEFAULT_HEIGHT, 80));
|
||||
list.add(new IntSliderWidgetSetting("size", Text.translatable("widgets.widgets.common.sizePercent"), 25, 100, 400));
|
||||
list.add(new ToggleWidgetSetting("shadow", Text.translatable("widgets.widgets.basictext.textshadow"), true));
|
||||
list.add(new EnumWidgetSetting<>("alignment", Text.translatable("widgets.widgets.basictext.alignment"), TextAlignment.class, TextAlignment.CENTER, TextAlignment::text));
|
||||
list.add(new IntSliderWidgetSetting("padding", Text.translatable("widgets.widgets.basictext.padding"), 0, 5, 20));
|
||||
@@ -66,8 +63,6 @@ public abstract class BasicTextWidget extends ModWidget {
|
||||
DEFAULT_BACKGROUND_COLOR = new Color(0, 0, 0, 80).getRGB(),
|
||||
DEFAULT_TEXT_COLOR = new Color(255, 255 ,255, 255).getRGB();
|
||||
|
||||
protected float size = 2f;
|
||||
|
||||
protected int backgroundColor = DEFAULT_BACKGROUND_COLOR, textColor = DEFAULT_TEXT_COLOR, width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT;
|
||||
protected TextAlignment textAlignment = TextAlignment.CENTER;
|
||||
|
||||
@@ -82,23 +77,11 @@ public abstract class BasicTextWidget extends ModWidget {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context, long n, TextRenderer textRenderer, int posX, int posY) {
|
||||
public void renderScaled(DrawContext context, long n, TextRenderer textRenderer, int posX, int posY) {
|
||||
if (!shouldRender) return;
|
||||
Matrix3x2fStack matrices = context.getMatrices();
|
||||
if (size != 1f){
|
||||
matrices.pushMatrix();
|
||||
matrices.translate(-(size-1) * posX, -(size-1) * posY, matrices);
|
||||
matrices.scale(size, size, matrices);
|
||||
}
|
||||
renderer = textRenderer;
|
||||
context.fill(posX, posY, posX + width(), posY + height(), this.backgroundColor);
|
||||
context.drawText(textRenderer, renderText, posX + textX, posY + (textShadow ? textY : textY + 1 /* offset 1 without text shadow so that it looks more aligned */), this.textColor, textShadow);
|
||||
if (size != 1f) matrices.popMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getScaleFactor() {
|
||||
return size;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -119,13 +102,13 @@ public abstract class BasicTextWidget extends ModWidget {
|
||||
|
||||
@Override
|
||||
public void onSettingsChanged(WidgetSettings settings) {
|
||||
super.onSettingsChanged(settings);
|
||||
this.backgroundColor = ((RGBAColorWidgetSetting) settings.optionById("backgroundcolor")).getColor();
|
||||
this.textColor = ((RGBAColorWidgetSetting) settings.optionById("textcolor")).getColor();
|
||||
this.width = ((IntSliderWidgetSetting) settings.optionById("width")).getValue();
|
||||
this.height = ((IntSliderWidgetSetting) settings.optionById("height")).getValue();
|
||||
this.textAlignment = (TextAlignment) ((EnumWidgetSetting<?>) settings.optionById("alignment")).getValue();
|
||||
this.padding = ((IntSliderWidgetSetting) settings.optionById("padding")).getValue();
|
||||
this.size = 0.01f * ((IntSliderWidgetSetting) settings.optionById("size")).getValue();
|
||||
this.textShadow = ((ToggleWidgetSetting) settings.optionById("shadow")).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package de.shiewk.widgets.widgets;
|
||||
|
||||
import de.shiewk.widgets.ModWidget;
|
||||
import de.shiewk.widgets.WidgetSettings;
|
||||
import de.shiewk.widgets.widgets.settings.IntSliderWidgetSetting;
|
||||
import de.shiewk.widgets.widgets.settings.RGBAColorWidgetSetting;
|
||||
@@ -11,12 +10,11 @@ import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.network.ClientPlayerEntity;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.joml.Matrix3x2fStack;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
|
||||
public class CoordinatesWidget extends ModWidget {
|
||||
public class CoordinatesWidget extends ResizableWidget {
|
||||
public CoordinatesWidget(Identifier id) {
|
||||
super(id, List.of(
|
||||
new ToggleWidgetSetting("x", Text.translatable("widgets.widgets.coordinates.showX"), true),
|
||||
@@ -25,26 +23,18 @@ public class CoordinatesWidget extends ModWidget {
|
||||
new RGBAColorWidgetSetting("backgroundcolor", Text.translatable("widgets.widgets.basictext.background"), 0, 0, 0, 80),
|
||||
new RGBAColorWidgetSetting("textcolor", Text.translatable("widgets.widgets.basictext.textcolor"), 255, 255, 255, 255),
|
||||
new IntSliderWidgetSetting("width", Text.translatable("widgets.widgets.basictext.width"), 10, WIDTH, 80*3),
|
||||
new IntSliderWidgetSetting("size", Text.translatable("widgets.widgets.common.sizePercent"), 25, 100, 400),
|
||||
new IntSliderWidgetSetting("paddingX", Text.translatable("widgets.widgets.basictext.paddingX"), 0, 5, 20),
|
||||
new IntSliderWidgetSetting("paddingY", Text.translatable("widgets.widgets.basictext.paddingY"), 0, 5, 20),
|
||||
new ToggleWidgetSetting("shadow", Text.translatable("widgets.widgets.basictext.textshadow"), true)
|
||||
));
|
||||
}
|
||||
|
||||
private float size = 1f;
|
||||
private String textX = "X", textY = "Y", textZ = "Z";
|
||||
private int txc = 0, tyc = 0, tzc = 0;
|
||||
private boolean shadow = true;
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY) {
|
||||
Matrix3x2fStack matrices = context.getMatrices();
|
||||
if (size != 1f){
|
||||
matrices.pushMatrix();
|
||||
matrices.translate(-(size-1) * posX, -(size-1) * posY, matrices);
|
||||
matrices.scale(size, size, matrices);
|
||||
}
|
||||
public void renderScaled(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY) {
|
||||
context.fill(posX, posY, posX + width(), posY + height(), this.backgroundColor);
|
||||
int y = this.paddingY;
|
||||
if (showX){
|
||||
@@ -64,7 +54,6 @@ public class CoordinatesWidget extends ModWidget {
|
||||
context.drawText(textRenderer, "Z: ", posX + paddingX, posY + y, textColor, shadow);
|
||||
context.drawText(textRenderer, textZ, posX + tzc, posY + y, textColor, shadow);
|
||||
}
|
||||
if (size != 1f) matrices.popMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -107,6 +96,7 @@ public class CoordinatesWidget extends ModWidget {
|
||||
|
||||
@Override
|
||||
public void onSettingsChanged(WidgetSettings settings) {
|
||||
super.onSettingsChanged(settings);
|
||||
this.backgroundColor = ((RGBAColorWidgetSetting) settings.optionById("backgroundcolor")).getColor();
|
||||
this.textColor = ((RGBAColorWidgetSetting) settings.optionById("textcolor")).getColor();
|
||||
this.showX = ((ToggleWidgetSetting) settings.optionById("x")).getValue();
|
||||
@@ -115,15 +105,9 @@ public class CoordinatesWidget extends ModWidget {
|
||||
this.paddingX = ((IntSliderWidgetSetting) settings.optionById("paddingX")).getValue();
|
||||
this.paddingY = ((IntSliderWidgetSetting) settings.optionById("paddingY")).getValue();
|
||||
this.width = ((IntSliderWidgetSetting) settings.optionById("width")).getValue();
|
||||
this.size = 0.01f * ((IntSliderWidgetSetting) settings.optionById("size")).getValue();
|
||||
this.shadow = ((ToggleWidgetSetting) settings.optionById("shadow")).getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getScaleFactor() {
|
||||
return this.size;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int width() {
|
||||
return width + paddingX * 2;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package de.shiewk.widgets.widgets;
|
||||
|
||||
import de.shiewk.widgets.ModWidget;
|
||||
import de.shiewk.widgets.WidgetSettings;
|
||||
import de.shiewk.widgets.widgets.settings.IntSliderWidgetSetting;
|
||||
import de.shiewk.widgets.widgets.settings.RGBAColorWidgetSetting;
|
||||
import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
@@ -13,17 +11,15 @@ import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.Util;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import org.joml.Matrix3x2fStack;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class KeyStrokesWidget extends ModWidget {
|
||||
public class KeyStrokesWidget extends ResizableWidget {
|
||||
public KeyStrokesWidget(Identifier id) {
|
||||
super(id, List.of(
|
||||
new ToggleWidgetSetting("showjump", Text.translatable("widgets.widgets.keystrokes.showJumpKey"), true),
|
||||
new IntSliderWidgetSetting("size", Text.translatable("widgets.widgets.common.sizePercent"), 25, 150, 400),
|
||||
new RGBAColorWidgetSetting("bgpressed", Text.translatable("widgets.widgets.keystrokes.colorBackgroundPressed"), 255, 255, 255, 80),
|
||||
new RGBAColorWidgetSetting("bgunpressed", Text.translatable("widgets.widgets.keystrokes.colorBackgroundUnpressed"), 0, 0, 0, 80),
|
||||
new RGBAColorWidgetSetting("keypressed", Text.translatable("widgets.widgets.keystrokes.colorKeyPressed"), 255, 255, 255, 255),
|
||||
@@ -33,12 +29,12 @@ public class KeyStrokesWidget extends ModWidget {
|
||||
|
||||
@Override
|
||||
public void onSettingsChanged(WidgetSettings settings) {
|
||||
super.onSettingsChanged(settings);
|
||||
showJumpKey = ((ToggleWidgetSetting) settings.optionById("showjump")).getValue();
|
||||
colorBackgroundPressed = ((RGBAColorWidgetSetting) settings.optionById("bgpressed")).getColor();
|
||||
colorBackgroundUnpressed = ((RGBAColorWidgetSetting) settings.optionById("bgunpressed")).getColor();
|
||||
colorKeyPressed = ((RGBAColorWidgetSetting) settings.optionById("keypressed")).getColor();
|
||||
colorKeyUnpressed = ((RGBAColorWidgetSetting) settings.optionById("keyunpressed")).getColor();
|
||||
size = 0.01f * ((IntSliderWidgetSetting) settings.optionById("size")).getValue();
|
||||
}
|
||||
|
||||
private boolean showJumpKey = true;
|
||||
@@ -48,8 +44,6 @@ public class KeyStrokesWidget extends ModWidget {
|
||||
colorKeyUnpressed = 0xffffffff,
|
||||
colorKeyPressed = 0xffffffff;
|
||||
|
||||
protected float size = 2;
|
||||
|
||||
protected static class Key {
|
||||
protected final KeyBinding binding;
|
||||
protected boolean isPressed;
|
||||
@@ -74,22 +68,13 @@ public class KeyStrokesWidget extends ModWidget {
|
||||
private Key KEY_JUMP;
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY) {
|
||||
public void renderScaled(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY) {
|
||||
if (KEY_JUMP == null) return;
|
||||
Matrix3x2fStack matrices = context.getMatrices();
|
||||
if (size != 1) {
|
||||
matrices.pushMatrix();
|
||||
matrices.translate(-(size-1) * posX, -(size-1) * posY, matrices);
|
||||
matrices.scale(size, size, matrices);
|
||||
}
|
||||
renderKeyStroke(context, textRenderer, measuringTimeNano, posX + 22, posY, KEY_FWD);
|
||||
renderKeyStroke(context, textRenderer, measuringTimeNano, posX, posY + 22, KEY_LEFT);
|
||||
renderKeyStroke(context, textRenderer, measuringTimeNano, posX + 22, posY + 22, KEY_BWD);
|
||||
renderKeyStroke(context, textRenderer, measuringTimeNano, posX + 44, posY + 22, KEY_RIGHT);
|
||||
if (showJumpKey) renderSpaceBar(context, measuringTimeNano, posX, posY + 44, KEY_JUMP);
|
||||
if (size != 1){
|
||||
matrices.popMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
protected void renderSpaceBar(final DrawContext context,
|
||||
@@ -170,11 +155,11 @@ public class KeyStrokesWidget extends ModWidget {
|
||||
|
||||
@Override
|
||||
public int width() {
|
||||
return (int) (64 * size);
|
||||
return 64;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int height() {
|
||||
return (int) ((showJumpKey ? 56 : 44) * size);
|
||||
return showJumpKey ? 56 : 44;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package de.shiewk.widgets.widgets;
|
||||
|
||||
import de.shiewk.widgets.ModWidget;
|
||||
import de.shiewk.widgets.WidgetSettingOption;
|
||||
import de.shiewk.widgets.WidgetSettings;
|
||||
import de.shiewk.widgets.widgets.settings.IntSliderWidgetSetting;
|
||||
import net.minecraft.client.font.TextRenderer;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.joml.Matrix3x2fStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class ResizableWidget extends ModWidget {
|
||||
|
||||
protected ResizableWidget(Identifier id, List<WidgetSettingOption> customSettings) {
|
||||
super(id, addScaleSetting(customSettings));
|
||||
}
|
||||
|
||||
private static List<WidgetSettingOption> addScaleSetting(List<WidgetSettingOption> target) {
|
||||
ArrayList<WidgetSettingOption> settings = new ArrayList<>(target);
|
||||
settings.add(new IntSliderWidgetSetting("size", Text.translatable("widgets.widgets.common.sizePercent"), 25, 100, 400));
|
||||
return settings;
|
||||
}
|
||||
|
||||
private float size = 1f;
|
||||
|
||||
@Override
|
||||
public final void render(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY) {
|
||||
if (size != 1f){
|
||||
Matrix3x2fStack matrices = context.getMatrices();
|
||||
matrices.pushMatrix();
|
||||
matrices.translate(-(size-1) * posX, -(size-1) * posY, matrices);
|
||||
matrices.scale(size, size, matrices);
|
||||
}
|
||||
this.renderScaled(context, measuringTimeNano, textRenderer, posX, posY);
|
||||
if (size != 1f) context.getMatrices().popMatrix();
|
||||
}
|
||||
|
||||
public abstract void renderScaled(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY);
|
||||
|
||||
@Override
|
||||
public void onSettingsChanged(WidgetSettings settings) {
|
||||
this.size = 0.01f * ((IntSliderWidgetSetting) settings.optionById("size")).getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final float getScaleFactor() {
|
||||
return size;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user