package openmods.gui.component; import net.minecraft.client.Minecraft; import openmods.gui.misc.BoxRenderer; import org.lwjgl.input.Mouse; public abstract class GuiComponentButton extends GuiComponentResizable { private static final BoxRenderer BOX_RENDERER_NORMAL = new BoxRenderer(0, 10); private static final BoxRenderer BOX_RENDERER_PRESSED = new BoxRenderer(20, 10); private static final BoxRenderer BOX_RENDERER_DISABLED = new BoxRenderer(40, 10); private int borderColor; protected boolean buttonEnabled = true; public GuiComponentButton(int x, int y, int width, int height, int borderColor) { super(x, y, width, height); this.borderColor = borderColor; } public void setButtonEnabled(boolean enabled) { this.buttonEnabled = enabled; } public boolean isButtonEnabled() { return buttonEnabled; } @Override public void render(Minecraft minecraft, int offsetX, int offsetY, int mouseX, int mouseY) { boolean pressed = isMouseOver(mouseX, mouseY) && Mouse.isButtonDown(0); BoxRenderer box = buttonEnabled? (pressed? BOX_RENDERER_PRESSED : BOX_RENDERER_NORMAL) : BOX_RENDERER_DISABLED; bindComponentsSheet(); box.render(this, x + offsetX, y + offsetY, width, height, borderColor); renderContents(minecraft, offsetX, offsetY, mouseX, mouseY, pressed); } protected abstract void renderContents(Minecraft minecraft, int offsetX, int offsetY, int mouseX, int mouseY, boolean pressed); }