diff options
author | Kiwi <42833050+Kiwi233@users.noreply.github.com> | 2020-05-24 08:28:19 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-24 08:28:19 +0800 |
commit | f0bce85d3faf040d87a22d83250ae2d9767c3642 (patch) | |
tree | ed60c1d975c8b06a27cae03d148714f7bb9e9805 /src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java | |
parent | ac7282a30ef161101cabc921e52db5c5d7e0096c (diff) | |
parent | d6c19a9b6434c8a4c59ea8452603f85cfd2ad208 (diff) | |
download | GT5-Unofficial-f0bce85d3faf040d87a22d83250ae2d9767c3642.tar.gz GT5-Unofficial-f0bce85d3faf040d87a22d83250ae2d9767c3642.tar.bz2 GT5-Unofficial-f0bce85d3faf040d87a22d83250ae2d9767c3642.zip |
Merge pull request #1 from GTNewHorizons/experimental
5/24
Diffstat (limited to 'src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java')
-rw-r--r-- | src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java new file mode 100644 index 0000000000..d0e6964abc --- /dev/null +++ b/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java @@ -0,0 +1,71 @@ +package gregtech.api.gui.widgets; + +import net.minecraft.client.gui.FontRenderer; + +import java.util.ArrayList; +import java.util.List; + +public class GT_GuiTooltipManager { + public interface GT_IToolTipRenderer { + int getGuiLeft(); + int getGuiTop(); + int getXSize(); + FontRenderer getFontRenderer(); + void drawHoveringText(List<String> par1List, int par2, int par3, FontRenderer font); + } + + private static final long DELAY = 5; + private int mouseStopped; + private int lastMouseX = -1; + private int lastMouseY = -1; + private final List<GT_GuiTooltip> tips = new ArrayList<>(); + + public void addToolTip(GT_GuiTooltip tip) { + if (!tips.contains(tip)) tips.add(tip); + } + + public boolean removeToolTip(GT_GuiTooltip tip) { + return tips.remove(tip); + } + + public final void onTick(GT_IToolTipRenderer render, int mouseX, int mouseY) { + if ((Math.abs(mouseX-lastMouseX) < 2 ) && (Math.abs(mouseY-lastMouseY) < 2 )) + mouseStopped = Math.min(mouseStopped+1, 50); + else + mouseStopped = 0; + + lastMouseX = mouseX; + lastMouseY = mouseY; + + if (mouseStopped > DELAY) + mouseX -= render.getGuiLeft(); + mouseY -= render.getGuiTop(); + for (GT_GuiTooltip tip : tips) { + if(tip.enabled && tip.bounds.contains(mouseX, mouseY)){ + tip.updateText(); + drawTooltip(tip, mouseX, mouseY, render); + break; + } + } + } + + private void drawTooltip(GT_GuiTooltip tip, int mouseX, int mouseY, GT_IToolTipRenderer render) { + List<String> text = tip.getToolTipText(); + if (text == null) + return; + + if (mouseX > render.getGuiLeft() + render.getXSize()/2) { + int maxWidth = 0; + for (String s : text) { + int w = render.getFontRenderer().getStringWidth(s); + if (w > maxWidth) { + maxWidth = w; + } + } + mouseX -= (maxWidth + 18); + } + + render.drawHoveringText(text, mouseX, mouseY, render.getFontRenderer()); + } + +} |