package gory_moon.moarsigns.client.interfaces.sign.buttons; import gory_moon.moarsigns.client.interfaces.GuiBase; import gory_moon.moarsigns.client.interfaces.GuiRectangle; import gory_moon.moarsigns.client.interfaces.sign.GuiMoarSign; import gory_moon.moarsigns.util.Colors; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.init.SoundEvents; public abstract class GuiButton extends GuiRectangle { public boolean isDisabled = false; protected int srcX; protected String newLine = "\n" + Colors.GRAY.toString(); public GuiButton(int x, int y, int srcX) { this(x, y, 20, 20, srcX); } public GuiButton(int x, int y, int w, int h, int srcX) { super(x, y, w, h); this.srcX = srcX; } public void drawButton(GuiBase gui, int mouseX, int mouseY) { int buttonType = isDisabled ? 60 : !gui.isOnOverlay(mouseX, mouseY) && inRect(mouseX, mouseY) ? 20 : 0; super.draw(gui, buttonType, 204); gui.drawTexturedModalRect(x + 2, y + 2, srcX, isDisabled ? 224 : 240, 16, 16); } public void hoverText(GuiBase gui, int x, int y) { drawString(gui, x, y, getButtonInfo(gui)); } public abstract String getButtonInfo(GuiBase gui); public abstract void action(GuiBase gui); public void update(GuiMoarSign gui) { } public boolean onClick(GuiMoarSign gui, int x, int y) { if (!gui.isOnOverlay(x, y) && inRect(x, y)) { action(gui); playClickSound(gui); return true; } return false; } public void playClickSound(GuiMoarSign gui) { gui.mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F)); } }