From c755ed605a0b9dd00f98e8fde720b48f01d195c9 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Tue, 27 Sep 2016 23:36:40 +0200 Subject: [PATCH] Initial side button refactor --- .../block/BlockConstructor.java | 1 + .../refinedstorage/block/BlockDestructor.java | 1 + .../block/BlockDiskManipulator.java | 1 + .../java/refinedstorage/block/BlockGrid.java | 1 + src/main/java/refinedstorage/gui/GuiBase.java | 53 +++++++++--------- .../refinedstorage/gui/GuiConstructor.java | 8 +-- .../refinedstorage/gui/GuiController.java | 2 +- .../java/refinedstorage/gui/GuiCrafter.java | 4 +- .../gui/GuiCraftingMonitor.java | 2 +- .../refinedstorage/gui/GuiDestructor.java | 10 ++-- .../java/refinedstorage/gui/GuiDetector.java | 8 +-- .../gui/GuiDiskManipulator.java | 12 ++-- .../java/refinedstorage/gui/GuiExporter.java | 8 +-- .../refinedstorage/gui/GuiFluidInterface.java | 4 +- .../java/refinedstorage/gui/GuiImporter.java | 10 ++-- .../java/refinedstorage/gui/GuiInterface.java | 6 +- .../gui/GuiNetworkTransmitter.java | 2 +- .../java/refinedstorage/gui/GuiRelay.java | 2 +- .../java/refinedstorage/gui/GuiSolderer.java | 2 +- .../java/refinedstorage/gui/GuiStorage.java | 10 ++-- .../gui/GuiWirelessTransmitter.java | 2 +- .../java/refinedstorage/gui/grid/GuiGrid.java | 8 +-- .../gui/sidebutton/SideButton.java | 41 +++++--------- .../gui/sidebutton/SideButtonCompare.java | 11 ++-- ...ideButtonCrafterTriggeredAutocrafting.java | 12 +++- .../sidebutton/SideButtonDetectorMode.java | 13 +++-- .../SideButtonGridSearchBoxMode.java | 20 +++---- .../SideButtonGridSortingDirection.java | 12 ++-- .../sidebutton/SideButtonGridSortingType.java | 12 ++-- .../sidebutton/SideButtonGridViewType.java | 12 ++-- .../gui/sidebutton/SideButtonIOMode.java | 12 ++-- .../gui/sidebutton/SideButtonMode.java | 11 ++-- .../sidebutton/SideButtonRedstoneMode.java | 12 ++-- .../gui/sidebutton/SideButtonType.java | 11 ++-- .../java/refinedstorage/item/ItemSilicon.java | 1 + .../assets/refinedstorage/textures/icons.png | Bin 3619 -> 3477 bytes 36 files changed, 187 insertions(+), 150 deletions(-) mode change 100644 => 100755 src/main/java/refinedstorage/gui/GuiDiskManipulator.java diff --git a/src/main/java/refinedstorage/block/BlockConstructor.java b/src/main/java/refinedstorage/block/BlockConstructor.java index 07787737a..45a511c9f 100755 --- a/src/main/java/refinedstorage/block/BlockConstructor.java +++ b/src/main/java/refinedstorage/block/BlockConstructor.java @@ -16,6 +16,7 @@ import refinedstorage.tile.TileConstructor; import java.util.ArrayList; import java.util.List; +// @TODO: Connectivity public class BlockConstructor extends BlockCable { public static final AxisAlignedBB HOLDER_NORTH_AABB = createAABB(7, 7, 2, 9, 9, 6); public static final AxisAlignedBB HOLDER_EAST_AABB = createAABB(10, 7, 7, 14, 9, 9); diff --git a/src/main/java/refinedstorage/block/BlockDestructor.java b/src/main/java/refinedstorage/block/BlockDestructor.java index 9a90b2df0..a5cede7ba 100755 --- a/src/main/java/refinedstorage/block/BlockDestructor.java +++ b/src/main/java/refinedstorage/block/BlockDestructor.java @@ -16,6 +16,7 @@ import refinedstorage.tile.TileDestructor; import java.util.List; +// @TODO: Connectivity public class BlockDestructor extends BlockCable { public BlockDestructor(String name) { super(name); diff --git a/src/main/java/refinedstorage/block/BlockDiskManipulator.java b/src/main/java/refinedstorage/block/BlockDiskManipulator.java index ce078fce8..ad22439bb 100755 --- a/src/main/java/refinedstorage/block/BlockDiskManipulator.java +++ b/src/main/java/refinedstorage/block/BlockDiskManipulator.java @@ -14,6 +14,7 @@ import refinedstorage.tile.TileDiskManipulator; import javax.annotation.Nullable; +// @TODO: Connectivity public class BlockDiskManipulator extends BlockNode { public BlockDiskManipulator() { super("disk_manipulator"); diff --git a/src/main/java/refinedstorage/block/BlockGrid.java b/src/main/java/refinedstorage/block/BlockGrid.java index 923502a41..81f7dd289 100755 --- a/src/main/java/refinedstorage/block/BlockGrid.java +++ b/src/main/java/refinedstorage/block/BlockGrid.java @@ -19,6 +19,7 @@ import refinedstorage.tile.grid.TileGrid; import java.util.List; +// @TODO: Better colors public class BlockGrid extends BlockNode { public static final PropertyEnum TYPE = PropertyEnum.create("type", EnumGridType.class); diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index b9166dd98..7464f658d 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -18,19 +18,17 @@ import refinedstorage.gui.sidebutton.SideButton; import refinedstorage.inventory.ItemHandlerFluid; import java.io.IOException; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public abstract class GuiBase extends GuiContainer { private static final Map TEXTURE_CACHE = new HashMap<>(); public static final FluidRenderer FLUID_RENDERER = new FluidRenderer(-1, 16, 16); - protected static final int SIDE_BUTTON_WIDTH = 20; - protected static final int SIDE_BUTTON_HEIGHT = 20; - - private List sideButtons = new ArrayList<>(); - - private int lastButtonId = 0; + private int lastButtonId; private int lastSideButtonY = 6; protected int width; @@ -47,23 +45,25 @@ public abstract class GuiBase extends GuiContainer { this.ySize = height; } + private boolean hasSideButtons() { + return buttonList.stream().anyMatch(b -> b instanceof SideButton); + } + @Override public void initGui() { - if (sideButtons.size() > 0) { - xSize -= SIDE_BUTTON_WIDTH; + if (hasSideButtons()) { + xSize -= SideButton.WIDTH; } super.initGui(); - sideButtons.clear(); - lastButtonId = 0; lastSideButtonY = 6; init(guiLeft, guiTop); - if (sideButtons.size() > 0) { - xSize += SIDE_BUTTON_WIDTH; + if (hasSideButtons()) { + xSize += SideButton.WIDTH; } } @@ -117,11 +117,10 @@ public abstract class GuiBase extends GuiContainer { String sideButtonTooltip = null; - for (SideButton sideButton : sideButtons) { - sideButton.draw(this, sideButton.getX() + 2, sideButton.getY() + 1); - - if (inBounds(sideButton.getX(), sideButton.getY(), SIDE_BUTTON_WIDTH, SIDE_BUTTON_HEIGHT, mouseX, mouseY)) { - sideButtonTooltip = sideButton.getTooltip(this); + // @TODO: Can this be moved to SideButton itself? + for (GuiButton button : buttonList) { + if (button instanceof SideButton && inBounds(button.xPosition, button.yPosition, SideButton.WIDTH, SideButton.HEIGHT, mouseX, mouseY)) { + sideButtonTooltip = ((SideButton) button).getTooltip(this); } } @@ -147,7 +146,9 @@ public abstract class GuiBase extends GuiContainer { protected void actionPerformed(GuiButton button) throws IOException { super.actionPerformed(button); - sideButtons.stream().filter(b -> b.getId() == button.id).findFirst().ifPresent(SideButton::actionPerformed); + if (button instanceof SideButton) { + ((SideButton) button).actionPerformed(); + } } public GuiButton addButton(int x, int y, int w, int h) { @@ -175,14 +176,16 @@ public abstract class GuiBase extends GuiContainer { return button; } - public void addSideButton(SideButton button) { - button.setX(-SIDE_BUTTON_WIDTH + 1); - button.setY(lastSideButtonY); - button.setId(addButton(guiLeft + button.getX(), guiTop + button.getY(), SIDE_BUTTON_WIDTH, SIDE_BUTTON_HEIGHT).id); + public SideButton addSideButton(SideButton button) { + button.id = lastButtonId++; + button.xPosition = guiLeft + -SideButton.WIDTH + 2; + button.yPosition = guiTop + lastSideButtonY; - lastSideButtonY += SIDE_BUTTON_HEIGHT + 4; + lastSideButtonY += SideButton.HEIGHT + 2; - sideButtons.add(button); + buttonList.add(button); + + return button; } public boolean inBounds(int x, int y, int w, int h, int ox, int oy) { diff --git a/src/main/java/refinedstorage/gui/GuiConstructor.java b/src/main/java/refinedstorage/gui/GuiConstructor.java index b99b7b3cf..3cfff4f2b 100755 --- a/src/main/java/refinedstorage/gui/GuiConstructor.java +++ b/src/main/java/refinedstorage/gui/GuiConstructor.java @@ -14,12 +14,12 @@ public class GuiConstructor extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileConstructor.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileConstructor.REDSTONE_MODE)); - addSideButton(new SideButtonType(TileConstructor.TYPE)); + addSideButton(new SideButtonType(this, TileConstructor.TYPE)); - addSideButton(new SideButtonCompare(TileConstructor.COMPARE, CompareUtils.COMPARE_DAMAGE)); - addSideButton(new SideButtonCompare(TileConstructor.COMPARE, CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonCompare(this, TileConstructor.COMPARE, CompareUtils.COMPARE_DAMAGE)); + addSideButton(new SideButtonCompare(this, TileConstructor.COMPARE, CompareUtils.COMPARE_NBT)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiController.java b/src/main/java/refinedstorage/gui/GuiController.java index 2b60bc616..8dfe4d090 100755 --- a/src/main/java/refinedstorage/gui/GuiController.java +++ b/src/main/java/refinedstorage/gui/GuiController.java @@ -29,7 +29,7 @@ public class GuiController extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileController.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileController.REDSTONE_MODE)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiCrafter.java b/src/main/java/refinedstorage/gui/GuiCrafter.java index 64358b1be..020df6094 100755 --- a/src/main/java/refinedstorage/gui/GuiCrafter.java +++ b/src/main/java/refinedstorage/gui/GuiCrafter.java @@ -12,8 +12,8 @@ public class GuiCrafter extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileCrafter.REDSTONE_MODE)); - addSideButton(new SideButtonCrafterTriggeredAutocrafting()); + addSideButton(new SideButtonRedstoneMode(this, TileCrafter.REDSTONE_MODE)); + addSideButton(new SideButtonCrafterTriggeredAutocrafting(this)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java index ac17bb13b..127c4f123 100755 --- a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java +++ b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java @@ -41,7 +41,7 @@ public class GuiCraftingMonitor extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileCraftingMonitor.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileCraftingMonitor.REDSTONE_MODE)); String cancel = t("gui.cancel"); String cancelAll = t("misc.refinedstorage:cancel_all"); diff --git a/src/main/java/refinedstorage/gui/GuiDestructor.java b/src/main/java/refinedstorage/gui/GuiDestructor.java index ce2e861e9..5a8023ea7 100755 --- a/src/main/java/refinedstorage/gui/GuiDestructor.java +++ b/src/main/java/refinedstorage/gui/GuiDestructor.java @@ -15,14 +15,14 @@ public class GuiDestructor extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileDestructor.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileDestructor.REDSTONE_MODE)); - addSideButton(new SideButtonType(TileDestructor.TYPE)); + addSideButton(new SideButtonType(this, TileDestructor.TYPE)); - addSideButton(new SideButtonMode(TileDestructor.MODE)); + addSideButton(new SideButtonMode(this, TileDestructor.MODE)); - addSideButton(new SideButtonCompare(TileDestructor.COMPARE, CompareUtils.COMPARE_DAMAGE)); - addSideButton(new SideButtonCompare(TileDestructor.COMPARE, CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonCompare(this, TileDestructor.COMPARE, CompareUtils.COMPARE_DAMAGE)); + addSideButton(new SideButtonCompare(this, TileDestructor.COMPARE, CompareUtils.COMPARE_NBT)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiDetector.java b/src/main/java/refinedstorage/gui/GuiDetector.java index 9b9317653..6a2318841 100755 --- a/src/main/java/refinedstorage/gui/GuiDetector.java +++ b/src/main/java/refinedstorage/gui/GuiDetector.java @@ -21,12 +21,12 @@ public class GuiDetector extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonType(TileDetector.TYPE)); + addSideButton(new SideButtonType(this, TileDetector.TYPE)); - addSideButton(new SideButtonDetectorMode()); + addSideButton(new SideButtonDetectorMode(this)); - addSideButton(new SideButtonCompare(TileDetector.COMPARE, CompareUtils.COMPARE_DAMAGE)); - addSideButton(new SideButtonCompare(TileDetector.COMPARE, CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonCompare(this, TileDetector.COMPARE, CompareUtils.COMPARE_DAMAGE)); + addSideButton(new SideButtonCompare(this, TileDetector.COMPARE, CompareUtils.COMPARE_NBT)); AMOUNT = new GuiTextField(0, fontRendererObj, x + 62 + 1, y + 23 + 1, 29, fontRendererObj.FONT_HEIGHT); AMOUNT.setText(String.valueOf(TileDetector.AMOUNT.getValue())); diff --git a/src/main/java/refinedstorage/gui/GuiDiskManipulator.java b/src/main/java/refinedstorage/gui/GuiDiskManipulator.java old mode 100644 new mode 100755 index b6ca2672b..9530f39ed --- a/src/main/java/refinedstorage/gui/GuiDiskManipulator.java +++ b/src/main/java/refinedstorage/gui/GuiDiskManipulator.java @@ -12,12 +12,12 @@ public class GuiDiskManipulator extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileDiskManipulator.REDSTONE_MODE)); - addSideButton(new SideButtonIOMode(TileDiskManipulator.IO_MODE)); - addSideButton(new SideButtonType(TileDiskManipulator.TYPE)); - addSideButton(new SideButtonMode(TileDiskManipulator.MODE)); - addSideButton(new SideButtonCompare(TileDiskManipulator.COMPARE, CompareUtils.COMPARE_DAMAGE)); - addSideButton(new SideButtonCompare(TileDiskManipulator.COMPARE, CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonRedstoneMode(this, TileDiskManipulator.REDSTONE_MODE)); + addSideButton(new SideButtonIOMode(this, TileDiskManipulator.IO_MODE)); + addSideButton(new SideButtonType(this, TileDiskManipulator.TYPE)); + addSideButton(new SideButtonMode(this, TileDiskManipulator.MODE)); + addSideButton(new SideButtonCompare(this, TileDiskManipulator.COMPARE, CompareUtils.COMPARE_DAMAGE)); + addSideButton(new SideButtonCompare(this, TileDiskManipulator.COMPARE, CompareUtils.COMPARE_NBT)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiExporter.java b/src/main/java/refinedstorage/gui/GuiExporter.java index edef72ec0..1101b1a25 100755 --- a/src/main/java/refinedstorage/gui/GuiExporter.java +++ b/src/main/java/refinedstorage/gui/GuiExporter.java @@ -14,12 +14,12 @@ public class GuiExporter extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileExporter.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileExporter.REDSTONE_MODE)); - addSideButton(new SideButtonType(TileExporter.TYPE)); + addSideButton(new SideButtonType(this, TileExporter.TYPE)); - addSideButton(new SideButtonCompare(TileExporter.COMPARE, CompareUtils.COMPARE_DAMAGE)); - addSideButton(new SideButtonCompare(TileExporter.COMPARE, CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonCompare(this, TileExporter.COMPARE, CompareUtils.COMPARE_DAMAGE)); + addSideButton(new SideButtonCompare(this, TileExporter.COMPARE, CompareUtils.COMPARE_NBT)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiFluidInterface.java b/src/main/java/refinedstorage/gui/GuiFluidInterface.java index 61945d0ab..6ae5f6ce9 100755 --- a/src/main/java/refinedstorage/gui/GuiFluidInterface.java +++ b/src/main/java/refinedstorage/gui/GuiFluidInterface.java @@ -16,9 +16,9 @@ public class GuiFluidInterface extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileFluidInterface.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileFluidInterface.REDSTONE_MODE)); - addSideButton(new SideButtonCompare(TileFluidInterface.COMPARE, CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonCompare(this, TileFluidInterface.COMPARE, CompareUtils.COMPARE_NBT)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiImporter.java b/src/main/java/refinedstorage/gui/GuiImporter.java index 77b1c7c6f..b6cc33877 100755 --- a/src/main/java/refinedstorage/gui/GuiImporter.java +++ b/src/main/java/refinedstorage/gui/GuiImporter.java @@ -15,14 +15,14 @@ public class GuiImporter extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileImporter.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileImporter.REDSTONE_MODE)); - addSideButton(new SideButtonType(TileImporter.TYPE)); + addSideButton(new SideButtonType(this, TileImporter.TYPE)); - addSideButton(new SideButtonMode(TileImporter.MODE)); + addSideButton(new SideButtonMode(this, TileImporter.MODE)); - addSideButton(new SideButtonCompare(TileImporter.COMPARE, CompareUtils.COMPARE_DAMAGE)); - addSideButton(new SideButtonCompare(TileImporter.COMPARE, CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonCompare(this, TileImporter.COMPARE, CompareUtils.COMPARE_DAMAGE)); + addSideButton(new SideButtonCompare(this, TileImporter.COMPARE, CompareUtils.COMPARE_NBT)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiInterface.java b/src/main/java/refinedstorage/gui/GuiInterface.java index 627456013..5a058b9e0 100755 --- a/src/main/java/refinedstorage/gui/GuiInterface.java +++ b/src/main/java/refinedstorage/gui/GuiInterface.java @@ -13,10 +13,10 @@ public class GuiInterface extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileInterface.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileInterface.REDSTONE_MODE)); - addSideButton(new SideButtonCompare(TileInterface.COMPARE, CompareUtils.COMPARE_DAMAGE)); - addSideButton(new SideButtonCompare(TileInterface.COMPARE, CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonCompare(this, TileInterface.COMPARE, CompareUtils.COMPARE_DAMAGE)); + addSideButton(new SideButtonCompare(this, TileInterface.COMPARE, CompareUtils.COMPARE_NBT)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java b/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java index a5fa375ee..8e09afc5d 100755 --- a/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java +++ b/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java @@ -15,7 +15,7 @@ public class GuiNetworkTransmitter extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileNetworkTransmitter.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileNetworkTransmitter.REDSTONE_MODE)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiRelay.java b/src/main/java/refinedstorage/gui/GuiRelay.java index 604d4f506..e5adf6c26 100755 --- a/src/main/java/refinedstorage/gui/GuiRelay.java +++ b/src/main/java/refinedstorage/gui/GuiRelay.java @@ -11,7 +11,7 @@ public class GuiRelay extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileRelay.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileRelay.REDSTONE_MODE)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiSolderer.java b/src/main/java/refinedstorage/gui/GuiSolderer.java index d02036e91..34cd6067c 100755 --- a/src/main/java/refinedstorage/gui/GuiSolderer.java +++ b/src/main/java/refinedstorage/gui/GuiSolderer.java @@ -15,7 +15,7 @@ public class GuiSolderer extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileSolderer.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileSolderer.REDSTONE_MODE)); } @Override diff --git a/src/main/java/refinedstorage/gui/GuiStorage.java b/src/main/java/refinedstorage/gui/GuiStorage.java index 631da0bb7..b263ee3fe 100755 --- a/src/main/java/refinedstorage/gui/GuiStorage.java +++ b/src/main/java/refinedstorage/gui/GuiStorage.java @@ -38,20 +38,20 @@ public class GuiStorage extends GuiBase { @Override public void init(int x, int y) { if (gui.getRedstoneModeParameter() != null) { - addSideButton(new SideButtonRedstoneMode(gui.getRedstoneModeParameter())); + addSideButton(new SideButtonRedstoneMode(this, gui.getRedstoneModeParameter())); } if (gui.getTypeParameter() != null) { - addSideButton(new SideButtonType(gui.getTypeParameter())); + addSideButton(new SideButtonType(this, gui.getTypeParameter())); } if (gui.getFilterParameter() != null) { - addSideButton(new SideButtonMode(gui.getFilterParameter())); + addSideButton(new SideButtonMode(this, gui.getFilterParameter())); } if (gui.getCompareParameter() != null) { - addSideButton(new SideButtonCompare(gui.getCompareParameter(), CompareUtils.COMPARE_DAMAGE)); - addSideButton(new SideButtonCompare(gui.getCompareParameter(), CompareUtils.COMPARE_NBT)); + addSideButton(new SideButtonCompare(this, gui.getCompareParameter(), CompareUtils.COMPARE_DAMAGE)); + addSideButton(new SideButtonCompare(this, gui.getCompareParameter(), CompareUtils.COMPARE_NBT)); } priorityField = new GuiTextField(0, fontRendererObj, x + 98 + 1, y + 54 + 1, 29, fontRendererObj.FONT_HEIGHT); diff --git a/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java b/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java index 2b2dab4f7..82cc11bab 100755 --- a/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java +++ b/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java @@ -11,7 +11,7 @@ public class GuiWirelessTransmitter extends GuiBase { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(TileWirelessTransmitter.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, TileWirelessTransmitter.REDSTONE_MODE)); } @Override diff --git a/src/main/java/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/refinedstorage/gui/grid/GuiGrid.java index 6964e6ae4..47960cb9d 100755 --- a/src/main/java/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/grid/GuiGrid.java @@ -76,7 +76,7 @@ public class GuiGrid extends GuiBase { @Override public void init(int x, int y) { if (grid.getRedstoneModeConfig() != null) { - addSideButton(new SideButtonRedstoneMode(grid.getRedstoneModeConfig())); + addSideButton(new SideButtonRedstoneMode(this, grid.getRedstoneModeConfig())); } int sx = x + 80 + 1; @@ -95,11 +95,11 @@ public class GuiGrid extends GuiBase { } if (grid.getType() != EnumGridType.FLUID) { - addSideButton(new SideButtonGridViewType(grid)); + addSideButton(new SideButtonGridViewType(this, grid)); } - addSideButton(new SideButtonGridSortingDirection(grid)); - addSideButton(new SideButtonGridSortingType(grid)); + addSideButton(new SideButtonGridSortingDirection(this, grid)); + addSideButton(new SideButtonGridSortingType(this, grid)); addSideButton(new SideButtonGridSearchBoxMode(this)); sortItems(); diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButton.java b/src/main/java/refinedstorage/gui/sidebutton/SideButton.java index ce2e9faf0..2049f20f7 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButton.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButton.java @@ -1,39 +1,28 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; import refinedstorage.gui.GuiBase; -public abstract class SideButton { - private int id; - private int x; - private int y; +public abstract class SideButton extends GuiButton { + public static final int WIDTH = 18; + public static final int HEIGHT = 18; - public int getId() { - return id; + protected GuiBase gui; + + public SideButton(GuiBase gui) { + super(-1, -1, -1, 18, 18, ""); + + this.gui = gui; } - public void setId(int id) { - this.id = id; - } - - public int getX() { - return x; - } - - public void setX(int x) { - this.x = x; - } - - public int getY() { - return y; - } - - public void setY(int y) { - this.y = y; + @Override + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + gui.bindTexture("icons.png"); + gui.drawTexture(xPosition, yPosition, 238, 16, 18, 18); } public abstract String getTooltip(GuiBase gui); - public abstract void draw(GuiBase gui, int x, int y); - public abstract void actionPerformed(); } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java index aad6ddfda..9255ae9fd 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.api.storage.CompareUtils; import refinedstorage.gui.GuiBase; @@ -10,7 +11,9 @@ public class SideButtonCompare extends SideButton { private TileDataParameter parameter; private int mask; - public SideButtonCompare(TileDataParameter parameter, int mask) { + public SideButtonCompare(GuiBase gui, TileDataParameter parameter, int mask) { + super(gui); + this.parameter = parameter; this.mask = mask; } @@ -29,8 +32,8 @@ public class SideButtonCompare extends SideButton { } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + super.drawButton(mc, mouseX, mouseY); int ty = 0; @@ -42,7 +45,7 @@ public class SideButtonCompare extends SideButton { int tx = (parameter.getValue() & mask) == mask ? 0 : 16; - gui.drawTexture(x, y + 1, tx, ty, 16, 16); + gui.drawTexture(xPosition, yPosition, tx, ty, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonCrafterTriggeredAutocrafting.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonCrafterTriggeredAutocrafting.java index 259468035..cc5b1b422 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonCrafterTriggeredAutocrafting.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonCrafterTriggeredAutocrafting.java @@ -1,20 +1,26 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.TileCrafter; import refinedstorage.tile.data.TileDataManager; public class SideButtonCrafterTriggeredAutocrafting extends SideButton { + public SideButtonCrafterTriggeredAutocrafting(GuiBase gui) { + super(gui); + } + @Override public String getTooltip(GuiBase gui) { return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:crafter.triggered_autocrafting") + TextFormatting.RESET + "\n" + gui.t("gui." + (TileCrafter.TRIGGERED_AUTOCRAFTING.getValue() ? "yes" : "no")); } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); - gui.drawTexture(x, y + 2 - 1, 0, 144, 16, 16); + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + super.drawButton(mc, mouseX, mouseY); + + gui.drawTexture(xPosition, yPosition, 0, 144, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java index 0bc5e0eee..5d3ded0ca 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java @@ -1,21 +1,26 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.TileDetector; import refinedstorage.tile.data.TileDataManager; public class SideButtonDetectorMode extends SideButton { + public SideButtonDetectorMode(GuiBase gui) { + super(gui); + } + @Override public String getTooltip(GuiBase gui) { return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:detector.mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:detector.mode." + TileDetector.MODE.getValue()); } @Override - public void draw(GuiBase gui, int x, int y) { - gui.drawItem(x, y, new ItemStack(Items.REDSTONE, 1)); + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + super.drawButton(mc, mouseX, mouseY); + + // @TODO: Detector side icons } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java index 2b8b14087..d7c955f8b 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.gui.grid.GuiGrid; @@ -7,26 +8,25 @@ import refinedstorage.integration.jei.IntegrationJEI; import refinedstorage.tile.grid.TileGrid; public class SideButtonGridSearchBoxMode extends SideButton { - private GuiGrid gui; - public SideButtonGridSearchBoxMode(GuiGrid gui) { - this.gui = gui; + super(gui); } @Override public String getTooltip(GuiBase gui) { - return TextFormatting.YELLOW + gui.t("sidebutton.refinedstorage:grid.search_box_mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:grid.search_box_mode." + this.gui.getGrid().getSearchBoxMode()); + return TextFormatting.YELLOW + gui.t("sidebutton.refinedstorage:grid.search_box_mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:grid.search_box_mode." + ((GuiGrid) gui).getGrid().getSearchBoxMode()); } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); - gui.drawTexture(x, y + 2 - 1, 0, 96, 16, 16); + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + super.drawButton(mc, mouseX, mouseY); + + gui.drawTexture(xPosition, yPosition, 0, 96, 16, 16); } @Override public void actionPerformed() { - int mode = gui.getGrid().getSearchBoxMode(); + int mode = ((GuiGrid) gui).getGrid().getSearchBoxMode(); if (mode == TileGrid.SEARCH_BOX_MODE_NORMAL) { mode = TileGrid.SEARCH_BOX_MODE_NORMAL_AUTOSELECTED; @@ -42,8 +42,8 @@ public class SideButtonGridSearchBoxMode extends SideButton { mode = TileGrid.SEARCH_BOX_MODE_NORMAL; } - gui.getGrid().onSearchBoxModeChanged(mode); + ((GuiGrid) gui).getGrid().onSearchBoxModeChanged(mode); - gui.updateSearchFieldFocus(mode); + ((GuiGrid) gui).updateSearchFieldFocus(mode); } } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java index 60f795da4..8b1972b0e 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.grid.IGrid; @@ -8,7 +9,9 @@ import refinedstorage.tile.grid.TileGrid; public class SideButtonGridSortingDirection extends SideButton { private IGrid grid; - public SideButtonGridSortingDirection(IGrid grid) { + public SideButtonGridSortingDirection(GuiBase gui, IGrid grid) { + super(gui); + this.grid = grid; } @@ -18,9 +21,10 @@ public class SideButtonGridSortingDirection extends SideButton { } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); - gui.drawTexture(x, y + 2 - 1, grid.getSortingDirection() * 16, 16, 16, 16); + public void drawButton(Minecraft mc, int x, int y) { + super.drawButton(mc, x, y); + + gui.drawTexture(xPosition, yPosition, grid.getSortingDirection() * 16, 16, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java index 70c00071b..9cc606e3b 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.grid.IGrid; @@ -8,7 +9,9 @@ import refinedstorage.tile.grid.TileGrid; public class SideButtonGridSortingType extends SideButton { private IGrid grid; - public SideButtonGridSortingType(IGrid grid) { + public SideButtonGridSortingType(GuiBase gui, IGrid grid) { + super(gui); + this.grid = grid; } @@ -18,9 +21,10 @@ public class SideButtonGridSortingType extends SideButton { } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); - gui.drawTexture(x - 1, y + 2 - 1, grid.getSortingType() * 16, 32, 16, 16); + public void drawButton(Minecraft mc, int x, int y) { + super.drawButton(mc, x, y); + + gui.drawTexture(xPosition, yPosition, grid.getSortingType() * 16, 32, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridViewType.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridViewType.java index 745c64420..6179c1567 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridViewType.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridViewType.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.grid.IGrid; @@ -8,7 +9,9 @@ import refinedstorage.tile.grid.TileGrid; public class SideButtonGridViewType extends SideButton { private IGrid grid; - public SideButtonGridViewType(IGrid grid) { + public SideButtonGridViewType(GuiBase gui, IGrid grid) { + super(gui); + this.grid = grid; } @@ -18,9 +21,10 @@ public class SideButtonGridViewType extends SideButton { } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); - gui.drawTexture(x, y + 2 - 1, grid.getViewType() * 16, 112, 16, 16); + public void drawButton(Minecraft mc, int x, int y) { + super.drawButton(mc, x, y); + + gui.drawTexture(xPosition, yPosition, grid.getViewType() * 16, 112, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonIOMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonIOMode.java index 128924568..2c3e60925 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonIOMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonIOMode.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.TileDiskManipulator; @@ -9,7 +10,9 @@ import refinedstorage.tile.data.TileDataParameter; public class SideButtonIOMode extends SideButton { private TileDataParameter parameter; - public SideButtonIOMode(TileDataParameter parameter) { + public SideButtonIOMode(GuiBase gui, TileDataParameter parameter) { + super(gui); + this.parameter = parameter; } @@ -19,9 +22,10 @@ public class SideButtonIOMode extends SideButton { } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); - gui.drawTexture(x, y + 1, parameter.getValue() == TileDiskManipulator.IO_MODE_EXTRACT ? 0 : 16, 160, 16, 16); + public void drawButton(Minecraft mc, int x, int y) { + super.drawButton(mc, x, y); + + gui.drawTexture(xPosition, yPosition, parameter.getValue() == TileDiskManipulator.IO_MODE_EXTRACT ? 0 : 16, 160, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java index e88283ad7..d63991006 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.config.IFilterable; @@ -9,7 +10,9 @@ import refinedstorage.tile.data.TileDataParameter; public class SideButtonMode extends SideButton { private TileDataParameter parameter; - public SideButtonMode(TileDataParameter parameter) { + public SideButtonMode(GuiBase gui, TileDataParameter parameter) { + super(gui); + this.parameter = parameter; } @@ -19,10 +22,10 @@ public class SideButtonMode extends SideButton { } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); + public void drawButton(Minecraft mc, int x, int y) { + super.drawButton(mc, x, y); - gui.drawTexture(x, y + 1, parameter.getValue() == IFilterable.WHITELIST ? 0 : 16, 64, 16, 16); + gui.drawTexture(xPosition, yPosition, parameter.getValue() == IFilterable.WHITELIST ? 0 : 16, 64, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java index 77e499eb2..e82b8ae76 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.data.TileDataManager; @@ -8,7 +9,9 @@ import refinedstorage.tile.data.TileDataParameter; public class SideButtonRedstoneMode extends SideButton { private TileDataParameter parameter; - public SideButtonRedstoneMode(TileDataParameter parameter) { + public SideButtonRedstoneMode(GuiBase gui, TileDataParameter parameter) { + super(gui); + this.parameter = parameter; } @@ -18,9 +21,10 @@ public class SideButtonRedstoneMode extends SideButton { } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); - gui.drawTexture(x, y + 1, parameter.getValue() * 16, 0, 16, 16); + public void drawButton(Minecraft mc, int x, int y) { + super.drawButton(mc, x, y); + + gui.drawTexture(xPosition, yPosition, parameter.getValue() * 16, 0, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonType.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonType.java index 441fe4024..128edd643 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonType.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonType.java @@ -1,5 +1,6 @@ package refinedstorage.gui.sidebutton; +import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.config.IType; @@ -9,7 +10,9 @@ import refinedstorage.tile.data.TileDataParameter; public class SideButtonType extends SideButton { private TileDataParameter type; - public SideButtonType(TileDataParameter type) { + public SideButtonType(GuiBase gui, TileDataParameter type) { + super(gui); + this.type = type; } @@ -19,10 +22,10 @@ public class SideButtonType extends SideButton { } @Override - public void draw(GuiBase gui, int x, int y) { - gui.bindTexture("icons.png"); + public void drawButton(Minecraft mc, int x, int y) { + super.drawButton(mc, x, y); - gui.drawTexture(x, y + 1, 16 * type.getValue(), 128, 16, 16); + gui.drawTexture(xPosition, yPosition, 16 * type.getValue(), 128, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/item/ItemSilicon.java b/src/main/java/refinedstorage/item/ItemSilicon.java index 8217d0b25..8832c88f7 100755 --- a/src/main/java/refinedstorage/item/ItemSilicon.java +++ b/src/main/java/refinedstorage/item/ItemSilicon.java @@ -1,5 +1,6 @@ package refinedstorage.item; +// @TODO: Better texture public class ItemSilicon extends ItemBase { public ItemSilicon() { super("silicon"); diff --git a/src/main/resources/assets/refinedstorage/textures/icons.png b/src/main/resources/assets/refinedstorage/textures/icons.png index 7f1b2e7e94c2437e32ae296cd32f1403f4a2da35..a4d29d1a6c7fd172ef1ce8148bcffba54fe5e595 100755 GIT binary patch literal 3477 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 OfbX_lTgyBnPyZV;ri4cT literal 3619 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