|
|
|
@@ -3,15 +3,17 @@ package appeng.client.gui.implementations;
|
|
|
|
|
import java.util.function.Consumer;
|
|
|
|
|
import java.util.function.LongConsumer;
|
|
|
|
|
|
|
|
|
|
import net.minecraft.client.gui.FontRenderer;
|
|
|
|
|
import net.minecraft.client.gui.IGuiEventListener;
|
|
|
|
|
import net.minecraft.client.gui.widget.button.Button;
|
|
|
|
|
import net.minecraft.client.font.TextRenderer;
|
|
|
|
|
import net.minecraft.client.gui.Element;
|
|
|
|
|
import net.minecraft.client.gui.widget.ButtonWidget;
|
|
|
|
|
|
|
|
|
|
import appeng.client.gui.AEBaseScreen;
|
|
|
|
|
import appeng.client.gui.NumberEntryType;
|
|
|
|
|
import appeng.client.gui.widgets.ITickingWidget;
|
|
|
|
|
import appeng.client.gui.widgets.NumberBox;
|
|
|
|
|
import appeng.core.AEConfig;
|
|
|
|
|
import net.minecraft.client.util.math.MatrixStack;
|
|
|
|
|
import net.minecraft.text.LiteralText;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* A utility widget that consists of a text-field to enter a number with
|
|
|
|
@@ -26,14 +28,14 @@ public class NumberEntryWidget implements ITickingWidget {
|
|
|
|
|
|
|
|
|
|
private final NumberBox level;
|
|
|
|
|
private final NumberEntryType type;
|
|
|
|
|
private Button plus1;
|
|
|
|
|
private Button plus10;
|
|
|
|
|
private Button plus100;
|
|
|
|
|
private Button plus1000;
|
|
|
|
|
private Button minus1;
|
|
|
|
|
private Button minus10;
|
|
|
|
|
private Button minus100;
|
|
|
|
|
private Button minus1000;
|
|
|
|
|
private ButtonWidget plus1;
|
|
|
|
|
private ButtonWidget plus10;
|
|
|
|
|
private ButtonWidget plus100;
|
|
|
|
|
private ButtonWidget plus1000;
|
|
|
|
|
private ButtonWidget minus1;
|
|
|
|
|
private ButtonWidget minus10;
|
|
|
|
|
private ButtonWidget minus100;
|
|
|
|
|
private ButtonWidget minus1000;
|
|
|
|
|
|
|
|
|
|
public NumberEntryWidget(AEBaseScreen<?> parent, int x, int y, int width, int height, NumberEntryType type,
|
|
|
|
|
LongConsumer changeListener) {
|
|
|
|
@@ -42,20 +44,19 @@ public class NumberEntryWidget implements ITickingWidget {
|
|
|
|
|
this.y = y;
|
|
|
|
|
this.type = type;
|
|
|
|
|
|
|
|
|
|
FontRenderer font = parent.getMinecraft().fontRenderer;
|
|
|
|
|
int inputX = parent.getGuiLeft() + x;
|
|
|
|
|
int inputY = parent.getGuiTop() + y;
|
|
|
|
|
this.level = new NumberBox(font, inputX, inputY, width, font.FONT_HEIGHT, type.getInputType(), changeListener);
|
|
|
|
|
this.level.setEnableBackgroundDrawing(false);
|
|
|
|
|
this.level.setMaxStringLength(16);
|
|
|
|
|
this.level.setTextColor(0xFFFFFF);
|
|
|
|
|
TextRenderer font = parent.getClient().textRenderer;
|
|
|
|
|
int inputX = parent.getX() + x;
|
|
|
|
|
int inputY = parent.getY() + y;
|
|
|
|
|
this.level = new NumberBox(font, inputX, inputY, width, font.fontHeight, type.getInputType(), changeListener);
|
|
|
|
|
this.level.setHasBorder(false);
|
|
|
|
|
this.level.setMaxLength(16);
|
|
|
|
|
this.level.setEditableColor(0xFFFFFF);
|
|
|
|
|
this.level.setVisible(true);
|
|
|
|
|
this.level.setFocused2(true);
|
|
|
|
|
parent.setFocusedDefault(this.level);
|
|
|
|
|
parent.setInitialFocus(this.level);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setActive(boolean active) {
|
|
|
|
|
this.level.setEnabled(active);
|
|
|
|
|
this.level.active = active;
|
|
|
|
|
this.plus1.active = active;
|
|
|
|
|
this.plus10.active = active;
|
|
|
|
|
this.plus100.active = active;
|
|
|
|
@@ -67,8 +68,8 @@ public class NumberEntryWidget implements ITickingWidget {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setTextFieldBounds(int x, int y, int width) {
|
|
|
|
|
this.level.x = parent.getGuiLeft() + x;
|
|
|
|
|
this.level.y = parent.getGuiTop() + y;
|
|
|
|
|
this.level.x = parent.getX() + x;
|
|
|
|
|
this.level.y = parent.getY() + y;
|
|
|
|
|
this.level.setWidth(width);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -76,28 +77,28 @@ public class NumberEntryWidget implements ITickingWidget {
|
|
|
|
|
this.level.setMinValue(minValue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void addButtons(Consumer<IGuiEventListener> addChildren, Consumer<Button> addButton) {
|
|
|
|
|
public void addButtons(Consumer<Element> addChildren, Consumer<ButtonWidget> addButton) {
|
|
|
|
|
final int[] steps = AEConfig.instance().getNumberEntrySteps(type);
|
|
|
|
|
int a = steps[0];
|
|
|
|
|
int b = steps[1];
|
|
|
|
|
int c = steps[2];
|
|
|
|
|
int d = steps[3];
|
|
|
|
|
|
|
|
|
|
int left = parent.getGuiLeft() + x;
|
|
|
|
|
int top = parent.getGuiTop() + y;
|
|
|
|
|
int left = parent.getX() + x;
|
|
|
|
|
int top = parent.getY() + y;
|
|
|
|
|
|
|
|
|
|
addButton.accept(this.plus1 = new Button(left, top, 22, 20, "+" + a, btn -> addQty(a)));
|
|
|
|
|
addButton.accept(this.plus10 = new Button(left + 28, top, 28, 20, "+" + b, btn -> addQty(b)));
|
|
|
|
|
addButton.accept(this.plus100 = new Button(left + 62, top, 32, 20, "+" + c, btn -> addQty(c)));
|
|
|
|
|
addButton.accept(this.plus1000 = new Button(left + 100, top, 38, 20, "+" + d, btn -> addQty(d)));
|
|
|
|
|
addButton.accept(this.plus1 = new ButtonWidget(left, top, 22, 20, new LiteralText("+" + a), btn -> addQty(a)));
|
|
|
|
|
addButton.accept(this.plus10 = new ButtonWidget(left + 28, top, 28, 20, new LiteralText("+" + b), btn -> addQty(b)));
|
|
|
|
|
addButton.accept(this.plus100 = new ButtonWidget(left + 62, top, 32, 20, new LiteralText("+" + c), btn -> addQty(c)));
|
|
|
|
|
addButton.accept(this.plus1000 = new ButtonWidget(left + 100, top, 38, 20, new LiteralText("+" + d), btn -> addQty(d)));
|
|
|
|
|
|
|
|
|
|
// Placing this here will give a sensible tab order
|
|
|
|
|
addChildren.accept(this.level);
|
|
|
|
|
|
|
|
|
|
addButton.accept(this.minus1 = new Button(left, top + 42, 22, 20, "-" + a, btn -> addQty(-a)));
|
|
|
|
|
addButton.accept(this.minus10 = new Button(left + 28, top + 42, 28, 20, "-" + b, btn -> addQty(-b)));
|
|
|
|
|
addButton.accept(this.minus100 = new Button(left + 62, top + 42, 32, 20, "-" + c, btn -> addQty(-c)));
|
|
|
|
|
addButton.accept(this.minus1000 = new Button(left + 100, top + 42, 38, 20, "-" + d, btn -> addQty(-d)));
|
|
|
|
|
addButton.accept(this.minus1 = new ButtonWidget(left, top + 42, 22, 20, new LiteralText("-" + a), btn -> addQty(-a)));
|
|
|
|
|
addButton.accept(this.minus10 = new ButtonWidget(left + 28, top + 42, 28, 20, new LiteralText("-" + b), btn -> addQty(-b)));
|
|
|
|
|
addButton.accept(this.minus100 = new ButtonWidget(left + 62, top + 42, 32, 20, new LiteralText("-" + c), btn -> addQty(-c)));
|
|
|
|
|
addButton.accept(this.minus1000 = new ButtonWidget(left + 100, top + 42, 38, 20, new LiteralText("-" + d), btn -> addQty(-d)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void addQty(final long i) {
|
|
|
|
@@ -106,8 +107,8 @@ public class NumberEntryWidget implements ITickingWidget {
|
|
|
|
|
this.level.setText(String.valueOf(Math.max(minValue, currentValue + i)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void render(int mouseX, int mouseY, float partialTicks) {
|
|
|
|
|
this.level.render(mouseX, mouseY, partialTicks);
|
|
|
|
|
public void render(MatrixStack matrices, int mouseX, int mouseY, float partialTicks) {
|
|
|
|
|
this.level.render(matrices, mouseX, mouseY, partialTicks);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setValue(long value, boolean skipNotify) {
|
|
|
|
|