diff --git a/src/main/java/refinedstorage/gui/GuiController.java b/src/main/java/refinedstorage/gui/GuiController.java index f3101449d..bdb61faa3 100644 --- a/src/main/java/refinedstorage/gui/GuiController.java +++ b/src/main/java/refinedstorage/gui/GuiController.java @@ -1,8 +1,13 @@ package refinedstorage.gui; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.item.ItemStack; import refinedstorage.container.ContainerController; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import refinedstorage.tile.TileController; +import refinedstorage.tile.TileMachine; public class GuiController extends GuiBase { @@ -11,7 +16,9 @@ public class GuiController extends GuiBase private int barX = 8; private int barY = 20; private int barWidth = 16; - private int barHeight = 58; + private int barHeight = 59; + + private Scrollbar scrollbar = new Scrollbar(157, 20, 12, 59); public GuiController(ContainerController container, TileController controller) { @@ -29,6 +36,7 @@ public class GuiController extends GuiBase @Override public void update(int x, int y) { + scrollbar.setCanScroll(getRows() > getVisibleRows()); } @Override @@ -41,19 +49,72 @@ public class GuiController extends GuiBase int barHeightNew = (int) ((float) controller.getEnergyStored(null) / (float) controller.getMaxEnergyStored(null) * (float) barHeight); drawTexture(x + barX, y + barY + barHeight - barHeightNew, 178, 0 + (barHeight - barHeightNew), barWidth, barHeightNew); + + scrollbar.draw(this); } @Override public void drawForeground(int mouseX, int mouseY) { + scrollbar.update(this, mouseX, mouseY); + drawString(7, 7, t("gui.refinedstorage:controller." + controller.getType().getId())); drawString(7, 87, t("container.inventory")); - drawString(31, 20, t("misc.refinedstorage:energy_usage", controller.getEnergyUsage())); + int x = 33; + int y = 26; + + int slot = getOffset() * 2; + + RenderHelper.enableGUIStandardItemLighting(); + + for (int i = 0; i < 4; ++i) + { + if (slot < controller.getMachines().size()) + { + TileMachine machine = controller.getMachines().get(slot); + IBlockState machineState = machine.getWorld().getBlockState(machine.getPos()); + Block machineBlock = machineState.getBlock(); + + ItemStack machineStack = new ItemStack(machineBlock, 1, machineBlock.getMetaFromState(machineState)); + + drawItem(x, y, machineStack); + drawString(x + 21, y + 5, t("misc.refinedstorage:energy_usage_minimal", machine.getEnergyUsage())); + } + + if (i == 1) + { + x = 33; + y += 30; + } + else + { + x += 60; + } + + slot++; + } if (inBounds(barX, barY, barWidth, barHeight, mouseX, mouseY)) { - drawTooltip(mouseX, mouseY, t("misc.refinedstorage:energy_stored", controller.getEnergyStored(null), controller.getMaxEnergyStored(null))); + drawTooltip(mouseX, mouseY, t("misc.refinedstorage:energy_usage", controller.getEnergyUsage()) + "\n" + t("misc.refinedstorage:energy_stored", controller.getEnergyStored(null), controller.getMaxEnergyStored(null))); } } + + public int getOffset() + { + return (int) (scrollbar.getCurrentScroll() / 59f * (float) getRows()); + } + + private int getRows() + { + int max = (int) Math.ceil((float) controller.getMachines().size() / (float) 2); + + return max < 0 ? 0 : max; + } + + private int getVisibleRows() + { + return 2; + } } diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 15c1b2773..27b6b5c09 100644 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -12,7 +12,6 @@ import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.init.SoundEvents; import net.minecraft.inventory.Slot; -import org.lwjgl.input.Mouse; import refinedstorage.RefinedStorage; import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerGrid; @@ -66,24 +65,6 @@ public class GuiGrid extends GuiBase public void update(int x, int y) { scrollbar.setCanScroll(getRows() > getVisibleRows()); - - if (scrollbar.canScroll()) - { - int wheel = Mouse.getDWheel(); - - wheel = Math.max(Math.min(-wheel, 1), -1); - - float delta = 20; - - if (wheel == -1) - { - scrollbar.setCurrentScroll(scrollbar.getCurrentScroll() - delta); - } - else if (wheel == 1) - { - scrollbar.setCurrentScroll(scrollbar.getCurrentScroll() + delta); - } - } } public int getOffset() diff --git a/src/main/java/refinedstorage/gui/Scrollbar.java b/src/main/java/refinedstorage/gui/Scrollbar.java index 694f43513..6a1fe734c 100644 --- a/src/main/java/refinedstorage/gui/Scrollbar.java +++ b/src/main/java/refinedstorage/gui/Scrollbar.java @@ -73,6 +73,21 @@ public class Scrollbar } else { + int wheel = Mouse.getDWheel(); + + wheel = Math.max(Math.min(-wheel, 1), -1); + + float delta = 15; + + if (wheel == -1) + { + setCurrentScroll(currentScroll - delta); + } + else if (wheel == 1) + { + setCurrentScroll(currentScroll + delta); + } + boolean down = Mouse.isButtonDown(0); if (!wasClicking && down && gui.inBounds(x, y, scrollbarWidth, scrollbarHeight, mouseX, mouseY)) diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 4e41d41fd..c7e297c48 100644 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -413,6 +413,21 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor { items.add(new StorageItem(buf)); } + + machines.clear(); + + size = buf.readInt(); + + for (int i = 0; i < size; ++i) + { + TileEntity tile = worldObj.getTileEntity(new BlockPos(buf.readInt(), buf.readInt(), buf.readInt())); + + if (tile instanceof TileMachine) + { + machines.add((TileMachine) tile); + } + } + } @Override @@ -429,5 +444,14 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor { item.toBytes(buf, items.indexOf(item)); } + + buf.writeInt(machines.size()); + + for (TileMachine machine : machines) + { + buf.writeInt(machine.getPos().getX()); + buf.writeInt(machine.getPos().getY()); + buf.writeInt(machine.getPos().getZ()); + } } } diff --git a/src/main/java/refinedstorage/tile/TileDetector.java b/src/main/java/refinedstorage/tile/TileDetector.java index 9f8378aaa..316563289 100644 --- a/src/main/java/refinedstorage/tile/TileDetector.java +++ b/src/main/java/refinedstorage/tile/TileDetector.java @@ -44,7 +44,7 @@ public class TileDetector extends TileMachine implements ICompareSetting @Override public int getEnergyUsage() { - return 4; + return 3; } @Override diff --git a/src/main/java/refinedstorage/tile/TileGrid.java b/src/main/java/refinedstorage/tile/TileGrid.java index cef6943b2..7b67098eb 100644 --- a/src/main/java/refinedstorage/tile/TileGrid.java +++ b/src/main/java/refinedstorage/tile/TileGrid.java @@ -52,7 +52,7 @@ public class TileGrid extends TileMachine @Override public int getEnergyUsage() { - return 5; + return 4; } @Override diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index 76335569e..bf0158de2 100644 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -25,7 +25,7 @@ public class TileInterface extends TileMachine implements ICompareSetting, ISide @Override public int getEnergyUsage() { - return 5; + return 4; } @Override diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index 356095c36..771dc0487 100644 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -45,7 +45,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora @Override public int getEnergyUsage() { - return 1; + return 3; } @Override diff --git a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java index e910d24ec..55e0ced12 100644 --- a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java @@ -26,7 +26,7 @@ public class TileWirelessTransmitter extends TileMachine implements IInventory @Override public int getEnergyUsage() { - return 4; + return 3; } @Override diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 0299037a1..2d4b9a3fd 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -21,6 +21,7 @@ gui.refinedstorage:interface.export.explanation.2=Incr. or decr. a slot: left/ r misc.refinedstorage:energy_stored=%d / %d RF misc.refinedstorage:energy_usage=Usage: %d RF/t +misc.refinedstorage:energy_usage_minimal=%d RF/t misc.refinedstorage:storage.stored=Stored: %d misc.refinedstorage:storage.stored_capacity=Stored: %d / %d diff --git a/src/main/resources/assets/refinedstorage/textures/gui/controller.png b/src/main/resources/assets/refinedstorage/textures/gui/controller.png index 2343c40fc..00fa5e0e0 100644 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/controller.png and b/src/main/resources/assets/refinedstorage/textures/gui/controller.png differ