diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-10 16:33:18 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-10 16:33:18 +0800 |
| commit | 7b6c58c7db26747783aee7aff2eff87f08ecb8c3 (patch) | |
| tree | 6a0e24aba2b869d18de65dd7dc1dcd8e78d4dcb2 /src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java | |
| parent | 1b21d26487636e50d03979acd5ca4a2a07761a25 (diff) | |
| download | RoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.tar.gz RoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.tar.bz2 RoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.zip | |
Basic cheating / deleting
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java | 95 |
1 files changed, 81 insertions, 14 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java index 522566cc5..42bd77bf5 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java @@ -1,13 +1,18 @@ package me.shedaniel.rei.gui; +import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.gui.widget.IWidget; +import me.shedaniel.rei.gui.widget.ItemListOverlay; import me.shedaniel.rei.gui.widget.LabelWidget; -import me.shedaniel.rei.mixin.IMixinContainerGui; +import me.shedaniel.rei.gui.widget.QueuedTooltip; +import me.shedaniel.rei.listeners.IMixinContainerGui; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerGui; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.util.Window; +import net.minecraft.util.math.MathHelper; import java.awt.*; import java.util.ArrayList; @@ -18,41 +23,80 @@ public class ContainerGuiOverlay extends Gui { private Rectangle rectangle; private IMixinContainerGui containerGui; private Window window; - private int page; - private List<IWidget> widgets; + private static int page = 0; + private final List<IWidget> widgets; + private ItemListOverlay itemListOverlay; + private ButtonWidget buttonLeft, buttonRight; + private final List<QueuedTooltip> queuedTooltips; public ContainerGuiOverlay(ContainerGui containerGui) { + this.queuedTooltips = new ArrayList<>(); this.containerGui = (IMixinContainerGui) containerGui; + this.widgets = new ArrayList<>(); } - @Override - protected void onInitialized() { + public void onInitialized() { //Update Variables - this.widgets = new ArrayList<>(); + this.widgets.clear(); this.window = MinecraftClient.getInstance().window; if (MinecraftClient.getInstance().currentGui instanceof ContainerGui) this.containerGui = (IMixinContainerGui) MinecraftClient.getInstance().currentGui; - this.page = 0; + this.rectangle = calculateBoundary(); + widgets.add(this.itemListOverlay = new ItemListOverlay(this, containerGui, page)); - rectangle = calculateBoundary(); - addButton(new ButtonWidget(-1, rectangle.x, rectangle.y + 3, 16, 20, "<") { + this.itemListOverlay.updateList(getItemListArea(), page); + addButton(buttonLeft = new ButtonWidget(-1, rectangle.x, rectangle.y + 3, 16, 20, "<") { @Override public void onPressed(double double_1, double double_2) { - //Left Page + page--; + if (page < 0) + page = getTotalPage(); + itemListOverlay.updateList(getItemListArea(), page); } }); - addButton(new ButtonWidget(-1, rectangle.x + rectangle.width - 18, rectangle.y + 3, 16, 20, ">") { + addButton(buttonRight = new ButtonWidget(-1, rectangle.x + rectangle.width - 18, rectangle.y + 3, 16, 20, ">") { @Override public void onPressed(double double_1, double double_2) { - //Right Page + page++; + if (page > getTotalPage()) + page = 0; + itemListOverlay.updateList(getItemListArea(), page); + } + }); + this.widgets.add(new LabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "") { + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + this.text = String.format("%s/%s", page + 1, getTotalPage() + 1); + super.draw(mouseX, mouseY, partialTicks); } }); - widgets.add(new LabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, String.format("%s/%s", page + 1, getTotalPage() + 1))); + + this.listeners.addAll(widgets); + } + + private Rectangle getItemListArea() { + return new Rectangle(rectangle.x + 2, rectangle.y + 24, rectangle.width - 4, rectangle.height - 27); + } + + public Rectangle getRectangle() { + return rectangle; + } + + public void render(int mouseX, int mouseY, float partialTicks) { + draw(mouseX, mouseY, partialTicks); + queuedTooltips.forEach(queuedTooltip -> containerGui.getContainerGui().drawTooltip(queuedTooltip.text, queuedTooltip.mouse.x, queuedTooltip.mouse.y)); + queuedTooltips.clear(); + } + + public void addTooltip(QueuedTooltip queuedTooltip) { + queuedTooltips.add(queuedTooltip); } @Override public void draw(int int_1, int int_2, float float_1) { widgets.forEach(widget -> widget.draw(int_1, int_2, float_1)); + itemListOverlay.draw(int_1, int_2, float_1); + super.draw(int_1, int_2, float_1); } private Rectangle calculateBoundary() { @@ -62,7 +106,30 @@ public class ContainerGuiOverlay extends Gui { } private int getTotalPage() { - return 10; + return MathHelper.ceil(ClientHelper.getItemList().size() / itemListOverlay.getTotalSlotsPerPage()); } + @Override + public boolean mouseScrolled(double amount) { + if (rectangle.contains(ClientHelper.getMouseLocation())) { + if (amount > 0 && buttonLeft.enabled) + buttonLeft.onPressed(0, 0); + else if (amount < 0 && buttonRight.enabled) + buttonRight.onPressed(0, 0); + else return false; + return true; + } + for(IWidget widget : widgets) + if (widget.mouseScrolled(amount)) + return true; + return false; + } + + @Override + public boolean mouseClicked(double double_1, double double_2, int int_1) { + for(IWidget widget : widgets) + if (widget.mouseClicked(double_1, double_2, int_1)) + return true; + return false; + } } |
