From b57c9cf49e6d38663f8c8ff0f22d463f782083e0 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Tue, 5 Apr 2016 05:13:56 +0200 Subject: [PATCH] Proportional scrolling --- .../refinedstorage/gui/GuiController.java | 1 + src/main/java/refinedstorage/gui/GuiGrid.java | 1 + .../java/refinedstorage/gui/Scrollbar.java | 20 +++++++++++++++---- .../refinedstorage/tile/TileController.java | 1 + .../refinedstorage/tile/grid/TileGrid.java | 2 +- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/refinedstorage/gui/GuiController.java b/src/main/java/refinedstorage/gui/GuiController.java index 49bd16de0..02c207924 100755 --- a/src/main/java/refinedstorage/gui/GuiController.java +++ b/src/main/java/refinedstorage/gui/GuiController.java @@ -40,6 +40,7 @@ public class GuiController extends GuiBase { @Override public void update(int x, int y) { scrollbar.setCanScroll(getRows() > VISIBLE_ROWS); + scrollbar.setScrollDelta((float) scrollbar.getScrollbarHeight() / (float) getRows()); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 200292ee9..1e8548adb 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -117,6 +117,7 @@ public class GuiGrid extends GuiBase { } scrollbar.setCanScroll(getRows() > getVisibleRows()); + scrollbar.setScrollDelta((float) scrollbar.getScrollbarHeight() / (float) getRows()); } public int getOffset() { diff --git a/src/main/java/refinedstorage/gui/Scrollbar.java b/src/main/java/refinedstorage/gui/Scrollbar.java index c958eb05f..c46fea862 100755 --- a/src/main/java/refinedstorage/gui/Scrollbar.java +++ b/src/main/java/refinedstorage/gui/Scrollbar.java @@ -10,6 +10,8 @@ public class Scrollbar { private int scrollbarWidth; private int scrollbarHeight; + private float scrollDelta = 15f; + private float currentScroll; private boolean wasClicking = false; private boolean isScrolling = false; @@ -21,6 +23,14 @@ public class Scrollbar { this.scrollbarHeight = scrollbarHeight; } + public int getScrollbarWidth() { + return scrollbarWidth; + } + + public int getScrollbarHeight() { + return scrollbarHeight; + } + public void setCanScroll(boolean canScroll) { this.canScroll = canScroll; } @@ -49,6 +59,10 @@ public class Scrollbar { currentScroll = newCurrentScroll; } + public void setScrollDelta(float delta) { + this.scrollDelta = delta; + } + public void draw(GuiBase gui) { gui.bindTexture("icons.png"); gui.drawTexture(gui.getGuiLeft() + x, gui.getGuiTop() + y + (int) currentScroll, canScroll() ? 232 : 244, 0, 12, 15); @@ -64,12 +78,10 @@ public class Scrollbar { wheel = Math.max(Math.min(-wheel, 1), -1); - float delta = 15; - if (wheel == -1) { - setCurrentScroll(currentScroll - delta); + setCurrentScroll(currentScroll - scrollDelta); } else if (wheel == 1) { - setCurrentScroll(currentScroll + delta); + setCurrentScroll(currentScroll + scrollDelta); } boolean down = Mouse.isButtonDown(0); diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 5e0988725..b77c7b477 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -460,6 +460,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor buf.writeInt(machines.size()); + // @TODO: This won't work clientside for far machines, send itemstacks instead! for (TileMachine machine : machines) { buf.writeInt(machine.getPos().getX()); buf.writeInt(machine.getPos().getY()); diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index 7e625567a..3956ebeb0 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -147,7 +147,7 @@ public class TileGrid extends TileMachine implements IGrid { for (ItemStack craftedItem : craftedItemsList) { if (!player.inventory.addItemStackToInventory(craftedItem.copy())) { - if (isConnected() && controller.push(craftedItem.copy())) { + if (controller != null && controller.push(craftedItem.copy())) { // NO OP } else { InventoryUtils.dropStack(player.worldObj, craftedItem, player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ());