package net.blay09.mods.eirairc.client.gui.base;
import net.blay09.mods.eirairc.client.graphics.TextureRegion;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import org.lwjgl.opengl.GL11;
public class GuiImageButton extends GuiButton {
private static final float FADE_PER_FRAME = 0.05f;
private TextureRegion region;
private float alphaFade = 1f;
private int fadeMode;
private String tooltipText;
public GuiImageButton(int id, int xPos, int yPos, TextureRegion region) {
super(id, xPos, yPos, "");
setTextureRegion(region);
}
public String getTooltipText() {
return tooltipText;
}
public void setTooltipText(String tooltipText) {
this.tooltipText = tooltipText;
}
public void setFadeMode(int fadeMode) {
this.fadeMode = fadeMode;
}
public void setTextureRegion(TextureRegion region) {
this.region = region;
width = region.getRegionWidth();
height = region.getRegionHeight();
}
public boolean isAlphaVisible() {
return alphaFade > 0;
}
@Override
public void drawButton(Minecraft mc, int mouseX, int mouseY) {
if(this.visible) {
// Fade button alpha in or out
if(fadeMode > 0) {
alphaFade = Math.min(1f, alphaFade + FADE_PER_FRAME);
if(alphaFade == 1f) {
fadeMode = 0;
}
} else if(fadeMode < 0) {
alphaFade = Math.max(0f, alphaFade - FADE_PER_FRAME);
if(alphaFade == 0f) {
fadeMode = 0;
}
}
// Render the button with fade alpha and hover effect
boolean hovered = false;
if(enabled) {
if (mouseX >= xPosition && mouseY >= yPosition && mouseX < xPosition + width && mouseY < yPosition + height) {
GL11.glColor4f(1f, 1f, 1f, 1f * alphaFade);
hovered = true;
} else {
GL11.glColor4f(1f, 1f, 1f, 0.75f * alphaFade);
}
} else {
GL11.glColor4f(1f, 1f, 1f, 0.25f * alphaFade);
}
if(hovered) {
GL11.glPushMatrix();
GL11.glTranslatef(0.5f, 0.5f, 0.5f);
}
region.draw(xPosition, yPosition);
if(hovered) {
GL11.glPopMatrix();
}
}
}
@Override
public boolean mousePressed(Minecraft mc, int mouseX, int mouseY) {
return (enabled && visible && isInside(mouseX, mouseY));
}
public boolean isInside(int x, int y) {
return (x >= xPosition && y >= yPosition && x < xPosition + width && y < yPosition + height);
}
}