Proportional scrolling

This commit is contained in:
Raoul Van den Berge
2016-04-05 05:13:56 +02:00
parent e9ae807486
commit b57c9cf49e
5 changed files with 20 additions and 5 deletions

View File

@@ -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

View File

@@ -117,6 +117,7 @@ public class GuiGrid extends GuiBase {
}
scrollbar.setCanScroll(getRows() > getVisibleRows());
scrollbar.setScrollDelta((float) scrollbar.getScrollbarHeight() / (float) getRows());
}
public int getOffset() {

View File

@@ -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);

View File

@@ -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());

View File

@@ -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());