package cofh.lib.gui.element; import cofh.lib.gui.GuiBase; import cofh.lib.gui.GuiProps; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; public abstract class ElementButtonManaged extends ElementBase { public static final ResourceLocation HOVER = new ResourceLocation(GuiProps.PATH_ELEMENTS + "Button_Hover.png"); public static final ResourceLocation ENABLED = new ResourceLocation(GuiProps.PATH_ELEMENTS + "Button_Enabled.png"); public static final ResourceLocation DISABLED = new ResourceLocation(GuiProps.PATH_ELEMENTS + "Button_Disabled.png"); private String _text; public ElementButtonManaged(GuiBase containerScreen, int posX, int posY, int sizeX, int sizeY, String text) { super(containerScreen, posX, posY, sizeX, sizeY); _text = text; } public void setText(String text) { _text = text; } @Override public void drawBackground(int mouseX, int mouseY, float gameTicks) { if (!isEnabled()) { gui.bindTexture(DISABLED); } else if (intersectsWith(mouseX, mouseY)) { gui.bindTexture(HOVER); } else { gui.bindTexture(ENABLED); } GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); drawTexturedModalRect(posX, posY, 0, 0, sizeX / 2, sizeY / 2); drawTexturedModalRect(posX, posY + sizeY / 2, 0, 256 - sizeY / 2, sizeX / 2, sizeY / 2); drawTexturedModalRect(posX + sizeX / 2, posY, 256 - sizeX / 2, 0, sizeX / 2, sizeY / 2); drawTexturedModalRect(posX + sizeX / 2, posY + sizeY / 2, 256 - sizeX / 2, 256 - sizeY / 2, sizeX / 2, sizeY / 2); } @Override public void drawForeground(int mouseX, int mouseY) { String text = getFontRenderer().trimStringToWidth(_text, sizeX - 4); drawCenteredString(getFontRenderer(), text, posX + sizeX / 2, posY + (sizeY - 8) / 2, getTextColor(mouseX, mouseY)); } protected int getTextColor(int mouseX, int mouseY) { if (!isEnabled()) { return -6250336; } else if (intersectsWith(mouseX, mouseY)) { return 16777120; } else { return 14737632; } } @Override public boolean onMousePressed(int mouseX, int mouseY, int mouseButton) { GuiBase.playSound("random.click", 1.0F, 1.0F); if (mouseButton == 0) { onClick(); } else if (mouseButton == 1) { onRightClick(); } else if (mouseButton == 2) { onMiddleClick(); } return true; } public abstract void onClick(); public void onRightClick() { } public void onMiddleClick() { } }