aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2020-05-10 16:06:29 +0200
committerGitHub <noreply@github.com>2020-05-10 16:06:29 +0200
commit87321491668b5b07801eaafb22390051c97fd9d8 (patch)
tree95107a6dac84a67dfea6aa49254efaa0f6d978d9 /src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java
parent92662137b00d39424b910846f63094a4c07e6589 (diff)
parentea1bf1b9b362f64b3c6d82c269ce9f66c82ee559 (diff)
downloadGT5-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.java71
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());
+ }
+
+}