From 5828b04596022c00c465d2e02004437e77492087 Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Fri, 10 Jul 2015 03:33:39 +0200 Subject: [PATCH] "The Commit that properly implements the disabling of Gui Elements" Added enabled Field to DelegatingElement, which every instance can handle itself Made isEnabled Field in GuiAdvancedTextField protected for subclasses to access Made GuiDraggingNumberInput only draggable while enabled Made GuiDropdown check enabled field before accepting mouse clicks Properly tints GuiTexturedButton if disabled --- .../replaymod/gui/elements/DelegatingElement.java | 7 ++++++- .../replaymod/gui/elements/GuiAdvancedTextField.java | 2 +- .../gui/elements/GuiDraggingNumberInput.java | 2 +- .../replaymod/gui/elements/GuiDropdown.java | 2 +- .../replaymod/gui/elements/GuiTexturedButton.java | 11 +++++++++-- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/DelegatingElement.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/DelegatingElement.java index 4b3c18c9..796fb395 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/DelegatingElement.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/DelegatingElement.java @@ -3,6 +3,9 @@ package eu.crushedpixel.replaymod.gui.elements; import net.minecraft.client.Minecraft; public abstract class DelegatingElement implements GuiElement { + + protected boolean enabled = true; + public static DelegatingElement of(final GuiElement element) { return new DelegatingElement() { @Override @@ -55,5 +58,7 @@ public abstract class DelegatingElement implements GuiElement { } @Override - public void setEnabled(boolean enabled) {} + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiAdvancedTextField.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiAdvancedTextField.java index 54ed3d96..55626266 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiAdvancedTextField.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiAdvancedTextField.java @@ -11,7 +11,7 @@ public class GuiAdvancedTextField extends GuiTextField implements GuiElement { public String hint; public int hintTextColor = Color.DARK_GRAY.getRGB(); - private boolean isEnabled = true; + protected boolean isEnabled = true; private int disabledTextColor; public GuiAdvancedTextField(FontRenderer fontRenderer, int x, int y, int width, int height) { diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDraggingNumberInput.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDraggingNumberInput.java index 227f063c..5701029d 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDraggingNumberInput.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDraggingNumberInput.java @@ -24,7 +24,7 @@ public class GuiDraggingNumberInput extends GuiNumberInputWithText { @Override public void mouseClick(Minecraft mc, int mouseX, int mouseY, int button) { - if(MouseUtils.isMouseWithinBounds(xPosition, yPosition, width, height)) { + if(MouseUtils.isMouseWithinBounds(xPosition, yPosition, width, height) && isEnabled) { dragging = false; clicked = true; prevMouseX = mouseX; diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java index 46d33cff..9bb44ea5 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java @@ -5,7 +5,6 @@ import eu.crushedpixel.replaymod.gui.elements.listeners.SelectionListener; import eu.crushedpixel.replaymod.utils.MouseUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.GuiTextField; import org.lwjgl.input.Mouse; import org.lwjgl.util.Point; @@ -140,6 +139,7 @@ public class GuiDropdown extends GuiAdvancedTextField { public boolean mouseClickedResult(int xPos, int yPos) { boolean success = false; + if(!isEnabled) return success; if(xPos > xPosition + width - height && xPos < xPosition + width && yPos > yPosition && yPos < yPosition + height) { open = !open; } else { diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiTexturedButton.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiTexturedButton.java index 3e9beac9..293fd7de 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiTexturedButton.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiTexturedButton.java @@ -5,6 +5,8 @@ import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.util.ResourceLocation; +import java.awt.*; + public class GuiTexturedButton extends GuiAdvancedButton implements GuiElement { private final ResourceLocation texture; private final int u, v; @@ -23,11 +25,16 @@ public class GuiTexturedButton extends GuiAdvancedButton implements GuiElement { @Override public void drawButton(Minecraft mc, int mouseX, int mouseY) { if (visible) { - hovered = isHovering(mouseX, mouseY); + hovered = isHovering(mouseX, mouseY) && enabled; + + if(!enabled) { + GlStateManager.color(Color.GRAY.getRed() / 255f, Color.GRAY.getGreen() / 255f, Color.GRAY.getBlue() / 255f, 1f); + } else { + GlStateManager.color(1f, 1f, 1f); + } mc.renderEngine.bindTexture(texture); - GlStateManager.color(1, 1, 1); int u = this.u + (hovered ? width : 0); Gui.drawModalRectWithCustomSizedTexture(xPosition, yPosition, u, v, width, height, textureWidth, textureHeight); }