From 01dda0470125395a94957af18ce46772dea0f509 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Thu, 7 May 2020 21:50:50 +0200 Subject: [PATCH] added scrolling to the terminal ui --- .../terminal/containers/ItemTerminalGui.java | 27 ++++++++++++++++-- .../textures/gui/item_terminal.png | Bin 1611 -> 1650 bytes 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/ellpeck/prettypipes/terminal/containers/ItemTerminalGui.java b/src/main/java/de/ellpeck/prettypipes/terminal/containers/ItemTerminalGui.java index 97cf9ea..e24a00d 100644 --- a/src/main/java/de/ellpeck/prettypipes/terminal/containers/ItemTerminalGui.java +++ b/src/main/java/de/ellpeck/prettypipes/terminal/containers/ItemTerminalGui.java @@ -11,6 +11,7 @@ import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.text.ITextComponent; import java.util.List; @@ -25,6 +26,7 @@ public class ItemTerminalGui extends ContainerScreen { private Button plusButton; private Button requestButton; private int requestAmount = 1; + private int scrollOffset; public ItemTerminalGui(ItemTerminalContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { super(screenContainer, inv, titleIn); @@ -77,14 +79,14 @@ public class ItemTerminalGui extends ContainerScreen { public void updateItemList(List items) { this.items = items; - this.updateWidgets(0); + this.updateWidgets(); } - private void updateWidgets(int scrollOffset) { + private void updateWidgets() { List widgets = this.streamWidgets().collect(Collectors.toList()); for (int i = 0; i < widgets.size(); i++) { ItemTerminalWidget widget = widgets.get(i); - int index = i + scrollOffset * 9; + int index = i + this.scrollOffset * 9; if (index >= this.items.size()) { widget.stack = ItemStack.EMPTY; widget.visible = false; @@ -119,6 +121,25 @@ public class ItemTerminalGui extends ContainerScreen { protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { this.getMinecraft().getTextureManager().bindTexture(TEXTURE); this.blit(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize); + + if (this.items != null && this.items.size() >= 9 * 4) { + float percentage = this.scrollOffset / (float) (this.items.size() / 9 - 3); + this.blit(this.guiLeft + 172, this.guiTop + 18 + (int) (percentage * (70 - 15)), 244, 0, 12, 15); + } else { + this.blit(this.guiLeft + 172, this.guiTop + 18, 244, 15, 12, 15); + } + } + + @Override + public boolean mouseScrolled(double x, double y, double scroll) { + if (this.items != null && this.items.size() >= 9 * 4) { + int offset = MathHelper.clamp(this.scrollOffset - (int) Math.signum(scroll), 0, this.items.size() / 9 - 3); + if (offset != this.scrollOffset) { + this.scrollOffset = offset; + this.updateWidgets(); + } + } + return true; } public Stream streamWidgets() { diff --git a/src/main/resources/assets/prettypipes/textures/gui/item_terminal.png b/src/main/resources/assets/prettypipes/textures/gui/item_terminal.png index 46f2a7295cc661496f2c9ff05e19345f0856fb7f..409593fec34e5bfc0b5fddc63a7242e1de766dd0 100644 GIT binary patch literal 1650 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 M>FVdQ&MBb@0Cl8rApigX