diff options
author | Martin Robertz <dream-master@gmx.net> | 2020-05-10 16:06:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-10 16:06:29 +0200 |
commit | 87321491668b5b07801eaafb22390051c97fd9d8 (patch) | |
tree | 95107a6dac84a67dfea6aa49254efaa0f6d978d9 /src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java | |
parent | 92662137b00d39424b910846f63094a4c07e6589 (diff) | |
parent | ea1bf1b9b362f64b3c6d82c269ce9f66c82ee559 (diff) | |
download | GT5-Unofficial-87321491668b5b07801eaafb22390051c97fd9d8.tar.gz GT5-Unofficial-87321491668b5b07801eaafb22390051c97fd9d8.tar.bz2 GT5-Unofficial-87321491668b5b07801eaafb22390051c97fd9d8.zip |
Merge pull request #281 from moller21/coverguis2
Cover GUI's take 2
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()); + } + +} |