diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index 7464f658d..47269bcec 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -117,10 +117,9 @@ public abstract class GuiBase extends GuiContainer { String sideButtonTooltip = null; - // @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); + if (button instanceof SideButton && ((SideButton) button).isHovered()) { + sideButtonTooltip = ((SideButton) button).getTooltip(); } } @@ -178,7 +177,7 @@ public abstract class GuiBase extends GuiContainer { public SideButton addSideButton(SideButton button) { button.id = lastButtonId++; - button.xPosition = guiLeft + -SideButton.WIDTH + 2; + button.xPosition = guiLeft + -SideButton.WIDTH - 2; button.yPosition = guiTop + lastSideButtonY; lastSideButtonY += SideButton.HEIGHT + 2; diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButton.java b/src/main/java/refinedstorage/gui/sidebutton/SideButton.java index 2049f20f7..454b9aad3 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButton.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButton.java @@ -2,6 +2,8 @@ package refinedstorage.gui.sidebutton; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.renderer.GlStateManager; +import org.lwjgl.opengl.GL11; import refinedstorage.gui.GuiBase; public abstract class SideButton extends GuiButton { @@ -16,13 +18,31 @@ public abstract class SideButton extends GuiButton { this.gui = gui; } - @Override - public void drawButton(Minecraft mc, int mouseX, int mouseY) { - gui.bindTexture("icons.png"); - gui.drawTexture(xPosition, yPosition, 238, 16, 18, 18); + public boolean isHovered() { + return hovered; } - public abstract String getTooltip(GuiBase gui); + @Override + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + hovered = gui.inBounds(xPosition, yPosition, width, height, mouseX, mouseY); + + gui.bindTexture("icons.png"); + gui.drawTexture(xPosition, yPosition, 238, hovered ? 35 : 16, 18, 18); + + drawButtonIcon(xPosition + 1, yPosition + 1); + + if (hovered) { + GlStateManager.enableBlend(); + GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GlStateManager.color(1.0f, 1.0f, 1.0f, 0.5f); + gui.drawTexture(xPosition, yPosition, 238, 54, 18, 18); + GlStateManager.disableBlend(); + } + } + + protected abstract void drawButtonIcon(int x, int y); + + public abstract String getTooltip(); 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 9255ae9fd..140f70d68 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.api.storage.CompareUtils; import refinedstorage.gui.GuiBase; @@ -19,7 +18,7 @@ public class SideButtonCompare extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { String tooltip = TextFormatting.YELLOW + gui.t("sidebutton.refinedstorage:compare." + mask) + TextFormatting.RESET + "\n"; if ((parameter.getValue() & mask) == mask) { @@ -32,9 +31,7 @@ public class SideButtonCompare extends SideButton { } @Override - public void drawButton(Minecraft mc, int mouseX, int mouseY) { - super.drawButton(mc, mouseX, mouseY); - + protected void drawButtonIcon(int x, int y) { int ty = 0; if (mask == CompareUtils.COMPARE_DAMAGE) { @@ -45,7 +42,7 @@ public class SideButtonCompare extends SideButton { int tx = (parameter.getValue() & mask) == mask ? 0 : 16; - gui.drawTexture(xPosition, yPosition, tx, ty, 16, 16); + gui.drawTexture(x, y, 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 cc5b1b422..25d1fa19c 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonCrafterTriggeredAutocrafting.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonCrafterTriggeredAutocrafting.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.TileCrafter; @@ -12,15 +11,13 @@ public class SideButtonCrafterTriggeredAutocrafting extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { 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 drawButton(Minecraft mc, int mouseX, int mouseY) { - super.drawButton(mc, mouseX, mouseY); - - gui.drawTexture(xPosition, yPosition, 0, 144, 16, 16); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 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 5d3ded0ca..6a0472d91 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.TileDetector; @@ -12,14 +11,12 @@ public class SideButtonDetectorMode extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:detector.mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:detector.mode." + TileDetector.MODE.getValue()); } @Override - public void drawButton(Minecraft mc, int mouseX, int mouseY) { - super.drawButton(mc, mouseX, mouseY); - + protected void drawButtonIcon(int x, int y) { // @TODO: Detector side icons } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java index d7c955f8b..1027afd23 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java @@ -1,8 +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; import refinedstorage.integration.jei.IntegrationJEI; import refinedstorage.tile.grid.TileGrid; @@ -13,15 +11,13 @@ public class SideButtonGridSearchBoxMode extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { 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 drawButton(Minecraft mc, int mouseX, int mouseY) { - super.drawButton(mc, mouseX, mouseY); - - gui.drawTexture(xPosition, yPosition, 0, 96, 16, 16); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 0, 96, 16, 16); } @Override diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java index 8b1972b0e..78cfb383d 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.grid.IGrid; @@ -16,15 +15,13 @@ public class SideButtonGridSortingDirection extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { return TextFormatting.YELLOW + gui.t("sidebutton.refinedstorage:grid.sorting.direction") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:grid.sorting.direction." + grid.getSortingDirection()); } @Override - public void drawButton(Minecraft mc, int x, int y) { - super.drawButton(mc, x, y); - - gui.drawTexture(xPosition, yPosition, grid.getSortingDirection() * 16, 16, 16, 16); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 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 9cc606e3b..2fe298885 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.grid.IGrid; @@ -16,15 +15,13 @@ public class SideButtonGridSortingType extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { return TextFormatting.YELLOW + gui.t("sidebutton.refinedstorage:grid.sorting.type") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:grid.sorting.type." + grid.getSortingType()); } @Override - public void drawButton(Minecraft mc, int x, int y) { - super.drawButton(mc, x, y); - - gui.drawTexture(xPosition, yPosition, grid.getSortingType() * 16, 32, 16, 16); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 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 6179c1567..beb1081bb 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridViewType.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridViewType.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.grid.IGrid; @@ -16,15 +15,13 @@ public class SideButtonGridViewType extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { return TextFormatting.YELLOW + gui.t("sidebutton.refinedstorage:grid.view_type") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:grid.view_type." + grid.getViewType()); } @Override - public void drawButton(Minecraft mc, int x, int y) { - super.drawButton(mc, x, y); - - gui.drawTexture(xPosition, yPosition, grid.getViewType() * 16, 112, 16, 16); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 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 2c3e60925..a1b8cbf8a 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonIOMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonIOMode.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.TileDiskManipulator; @@ -17,15 +16,13 @@ public class SideButtonIOMode extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:iomode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:iomode." + (parameter.getValue() == TileDiskManipulator.IO_MODE_INSERT ? "insert" : "extract")); } @Override - 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); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 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 d63991006..1fa42bc75 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.config.IFilterable; @@ -17,15 +16,13 @@ public class SideButtonMode extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:mode." + (parameter.getValue() == IFilterable.WHITELIST ? "whitelist" : "blacklist")); } @Override - public void drawButton(Minecraft mc, int x, int y) { - super.drawButton(mc, x, y); - - gui.drawTexture(xPosition, yPosition, parameter.getValue() == IFilterable.WHITELIST ? 0 : 16, 64, 16, 16); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 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 e82b8ae76..2c3ff44fd 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.data.TileDataManager; @@ -16,15 +15,13 @@ public class SideButtonRedstoneMode extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { return TextFormatting.RED + gui.t("sidebutton.refinedstorage:redstone_mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:redstone_mode." + parameter.getValue()); } @Override - public void drawButton(Minecraft mc, int x, int y) { - super.drawButton(mc, x, y); - - gui.drawTexture(xPosition, yPosition, parameter.getValue() * 16, 0, 16, 16); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 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 128edd643..9a01eac88 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonType.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonType.java @@ -1,6 +1,5 @@ package refinedstorage.gui.sidebutton; -import net.minecraft.client.Minecraft; import net.minecraft.util.text.TextFormatting; import refinedstorage.gui.GuiBase; import refinedstorage.tile.config.IType; @@ -17,15 +16,13 @@ public class SideButtonType extends SideButton { } @Override - public String getTooltip(GuiBase gui) { + public String getTooltip() { return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:type") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:type." + type.getValue()); } @Override - public void drawButton(Minecraft mc, int x, int y) { - super.drawButton(mc, x, y); - - gui.drawTexture(xPosition, yPosition, 16 * type.getValue(), 128, 16, 16); + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, 16 * type.getValue(), 128, 16, 16); } @Override diff --git a/src/main/resources/assets/refinedstorage/textures/icons.png b/src/main/resources/assets/refinedstorage/textures/icons.png index a4d29d1a6..ee15bb05c 100755 Binary files a/src/main/resources/assets/refinedstorage/textures/icons.png and b/src/main/resources/assets/refinedstorage/textures/icons.png differ diff --git a/src/main/resources/assets/refinedstorage/textures/icons_dev.png b/src/main/resources/assets/refinedstorage/textures/icons_dev.png new file mode 100755 index 000000000..1011bc803 Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/icons_dev.png differ