From 414d40499bfbbb97b048d3c1eb393e219660c9df Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 20 Dec 2015 10:40:20 +0100 Subject: [PATCH] add basic scrolling --- .../java/storagecraft/gui/GuiController.java | 3 -- src/main/java/storagecraft/gui/GuiDrive.java | 15 +++--- .../java/storagecraft/gui/GuiExporter.java | 3 -- src/main/java/storagecraft/gui/GuiGrid.java | 51 ++++++++++++++++--- .../java/storagecraft/gui/GuiImporter.java | 3 -- .../storagecraft/gui/GuiStorageProxy.java | 3 -- 6 files changed, 51 insertions(+), 27 deletions(-) diff --git a/src/main/java/storagecraft/gui/GuiController.java b/src/main/java/storagecraft/gui/GuiController.java index bb5bd0bf6..6e75ba734 100644 --- a/src/main/java/storagecraft/gui/GuiController.java +++ b/src/main/java/storagecraft/gui/GuiController.java @@ -3,7 +3,6 @@ package storagecraft.gui; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; -import org.lwjgl.opengl.GL11; import storagecraft.container.ContainerController; import storagecraft.tile.TileController; @@ -23,8 +22,6 @@ public class GuiController extends GuiContainer { @Override protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - GL11.glColor3f(1.0F, 1.0F, 1.0F); - mc.getTextureManager().bindTexture(CONTROLLER_RESOURCE); int x = (this.width - xSize) / 2; diff --git a/src/main/java/storagecraft/gui/GuiDrive.java b/src/main/java/storagecraft/gui/GuiDrive.java index 7ce2b7958..8a8125f90 100644 --- a/src/main/java/storagecraft/gui/GuiDrive.java +++ b/src/main/java/storagecraft/gui/GuiDrive.java @@ -2,33 +2,30 @@ package storagecraft.gui; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; -import org.lwjgl.opengl.GL11; import storagecraft.container.ContainerDrive; import storagecraft.tile.TileDrive; public class GuiDrive extends GuiMachine { public static final ResourceLocation DRIVE_RESOURCE = new ResourceLocation("storagecraft:textures/gui/drive.png"); - + public GuiDrive(ContainerDrive container, TileDrive drive) { super(container, drive); - + this.xSize = 176; this.ySize = 190; } - + @Override protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - GL11.glColor3f(1.0F, 1.0F, 1.0F); - mc.getTextureManager().bindTexture(DRIVE_RESOURCE); - + drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); } - + @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { super.drawGuiContainerForegroundLayer(mouseX, mouseY); - + fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:drive"), 7, 7, 4210752); fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 96, 4210752); } diff --git a/src/main/java/storagecraft/gui/GuiExporter.java b/src/main/java/storagecraft/gui/GuiExporter.java index 8fd70c0aa..b90d15fea 100644 --- a/src/main/java/storagecraft/gui/GuiExporter.java +++ b/src/main/java/storagecraft/gui/GuiExporter.java @@ -3,7 +3,6 @@ package storagecraft.gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; -import org.lwjgl.opengl.GL11; import storagecraft.StorageCraft; import storagecraft.container.ContainerExporter; import storagecraft.network.MessageExporterUpdate; @@ -63,8 +62,6 @@ public class GuiExporter extends GuiMachine { @Override protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - GL11.glColor3f(1.0F, 1.0F, 1.0F); - mc.getTextureManager().bindTexture(EXPORTER_RESOURCE); drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); diff --git a/src/main/java/storagecraft/gui/GuiGrid.java b/src/main/java/storagecraft/gui/GuiGrid.java index 3d7ca0484..9115ef261 100644 --- a/src/main/java/storagecraft/gui/GuiGrid.java +++ b/src/main/java/storagecraft/gui/GuiGrid.java @@ -5,7 +5,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; +import org.lwjgl.input.Mouse; import storagecraft.StorageCraft; import storagecraft.container.ContainerGrid; import storagecraft.network.MessageStoragePull; @@ -19,6 +19,8 @@ public class GuiGrid extends GuiMachine { private ContainerGrid container; private TileGrid grid; + private int offset; + private int hoveringSlot; public GuiGrid(ContainerGrid container, TileGrid grid) { @@ -32,9 +34,42 @@ public class GuiGrid extends GuiMachine { } @Override - protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - GL11.glColor3f(1.0F, 1.0F, 1.0F); + public void updateScreen() { + super.updateScreen(); + int wheel = Mouse.getDWheel(); + + wheel = Math.max(Math.min(-wheel, 1), -1); + + if (canScroll(wheel)) { + offset += wheel; + } + + if (offset > getMaxOffset()) { + offset = getMaxOffset(); + } + } + + public int getMaxOffset() { + if (!grid.isConnected()) { + return 0; + } + + int max = ((int) Math.ceil((float) grid.getController().getItems().size() / (float) 9)) - 4; + + return max < 0 ? 0 : max; + } + + public boolean canScroll(int delta) { + if (offset + delta < 0) { + return false; + } + + return offset + delta <= getMaxOffset(); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { mc.getTextureManager().bindTexture(GRID_RESOURCE); drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); @@ -55,22 +90,26 @@ public class GuiGrid extends GuiMachine { hoveringSlot = -1; + int slot = offset * 9; + for (int i = 0; i < 9 * 4; ++i) { - if (grid.isConnected() && i < grid.getController().getItems().size()) { - ItemStack stack = grid.getController().getItems().get(i).toItemStack(); + if (grid.isConnected() && slot < grid.getController().getItems().size()) { + ItemStack stack = grid.getController().getItems().get(slot).toItemStack(); itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), stack, x, y); itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), stack, x, y); } if ((mx >= x && mx <= x + 16 && my >= y && my <= y + 16) || !grid.isConnected()) { - hoveringSlot = i; + hoveringSlot = slot; int color = grid.isConnected() ? -2130706433 : 0xFF5B5B5B; drawGradientRect(x, y, x + 16, y + 16, color, color); } + slot++; + x += 18; if ((i + 1) % 9 == 0) { diff --git a/src/main/java/storagecraft/gui/GuiImporter.java b/src/main/java/storagecraft/gui/GuiImporter.java index cc48a34d0..6c12250c1 100644 --- a/src/main/java/storagecraft/gui/GuiImporter.java +++ b/src/main/java/storagecraft/gui/GuiImporter.java @@ -3,7 +3,6 @@ package storagecraft.gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; -import org.lwjgl.opengl.GL11; import storagecraft.StorageCraft; import storagecraft.container.ContainerImporter; import storagecraft.network.MessageImporterUpdate; @@ -66,8 +65,6 @@ public class GuiImporter extends GuiMachine { @Override protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - GL11.glColor3f(1.0F, 1.0F, 1.0F); - mc.getTextureManager().bindTexture(IMPORTER_RESOURCE); drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); diff --git a/src/main/java/storagecraft/gui/GuiStorageProxy.java b/src/main/java/storagecraft/gui/GuiStorageProxy.java index d675e1c57..ccad01557 100644 --- a/src/main/java/storagecraft/gui/GuiStorageProxy.java +++ b/src/main/java/storagecraft/gui/GuiStorageProxy.java @@ -2,7 +2,6 @@ package storagecraft.gui; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; -import org.lwjgl.opengl.GL11; import storagecraft.container.ContainerStorageProxy; import storagecraft.tile.TileStorageProxy; @@ -15,8 +14,6 @@ public class GuiStorageProxy extends GuiMachine { @Override protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - GL11.glColor3f(1.0F, 1.0F, 1.0F); - mc.getTextureManager().bindTexture(STORAGE_PROXY_RESOURCE); drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize);