package net.geforcemods.securitycraft.gui.components;
import net.geforcemods.securitycraft.util.ClientUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.SoundHandler;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiConfirmOpenLink;
import net.minecraft.client.gui.GuiYesNoCallback;
import net.minecraft.util.text.TextFormatting;
/**
* Invisible "button" which allows you to add clickable links to your GUIs.
* Opens any link whenever you click on the button's text.
*
* @author Geforce
*/
public class GuiLinkedText extends GuiButton implements GuiYesNoCallback {
private final String url;
private int textColor = 16777120;
public GuiLinkedText(int id, int xPos, int yPos, String link) {
super(id, xPos, yPos, Minecraft.getMinecraft().fontRendererObj.getStringWidth(link), 14, link);
url = link;
}
public GuiLinkedText(int id, int xPos, int yPos, String link, String displayString) {
super(id, xPos, yPos, Minecraft.getMinecraft().fontRendererObj.getStringWidth(displayString), 14, displayString);
url = link;
}
public GuiLinkedText(int id, int xPos, int yPos, String link, String displayString, int color) {
super(id, xPos, yPos, Minecraft.getMinecraft().fontRendererObj.getStringWidth(displayString), 14, displayString);
url = link;
textColor = color;
}
@Override
public void drawButton(Minecraft mc, int mouseX, int mouseY) {
if (this.visible) {
FontRenderer fontrenderer = mc.fontRendererObj;
this.mouseDragged(mc, mouseX, mouseY);
this.drawCenteredString(fontrenderer, TextFormatting.UNDERLINE + this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, textColor);
}
}
@Override
public boolean mousePressed(Minecraft mc, int mouseX, int mouseY) {
if(this.enabled && this.visible && mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height) {
if (mc.gameSettings.chatLinksPrompt) {
mc.displayGuiScreen(new GuiConfirmOpenLink(this, url, 0, false));
}
return true;
}
return false;
}
@Override
public void confirmClicked(boolean choseYes, int buttonID) {
if(buttonID == 0) {
if(choseYes) {
ClientUtils.openURL(url);
}
}
ClientUtils.closePlayerScreen();
}
@Override
public void playPressSound(SoundHandler soundHandler) {}
}