aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/gui/widgets
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2024-08-16 22:26:16 +0900
committerGitHub <noreply@github.com>2024-08-16 22:26:16 +0900
commit83ebeadd3b867f45914972f4573211b3324ca433 (patch)
tree02acdcbb7cda6ee8c72cf7b4f575aa6591373d74 /src/main/java/gregtech/api/gui/widgets
parent07610983b13813893b482e2c1a050355fd007c60 (diff)
downloadGT5-Unofficial-83ebeadd3b867f45914972f4573211b3324ca433.tar.gz
GT5-Unofficial-83ebeadd3b867f45914972f4573211b3324ca433.tar.bz2
GT5-Unofficial-83ebeadd3b867f45914972f4573211b3324ca433.zip
Cleanup (#2904)
* Remove redundant inputSeparation=true call * Remove deprecated MetaTileEntity#isDisplaySecondaryDescription * Always use ModularUI * Remove useModularUI * Remove unused GUI features * Remove IGlobalWirelessEnergy * Remove CommonValues.V & CommonValues.VN * More deprecation cleanup --------- Co-authored-by: boubou19 <miisterunknown@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/api/gui/widgets')
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiCoverTabLine.java179
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java162
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java157
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java114
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiIconCheckButton.java43
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiIntegerTextBox.java73
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiSlotTooltip.java24
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiSmartTooltip.java27
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiTab.java174
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiTabLine.java274
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiTooltip.java121
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java80
12 files changed, 0 insertions, 1428 deletions
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiCoverTabLine.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiCoverTabLine.java
deleted file mode 100644
index 6f4eb0e2c2..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiCoverTabLine.java
+++ /dev/null
@@ -1,179 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-import java.util.List;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.inventory.GuiContainer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.StatCollector;
-import net.minecraftforge.common.util.ForgeDirection;
-
-import org.lwjgl.opengl.GL11;
-
-import codechicken.nei.api.API;
-import codechicken.nei.api.INEIGuiAdapter;
-import gregtech.api.enums.GT_Values;
-import gregtech.api.gui.GT_GUIContainerMetaTile_Machine;
-import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.net.GT_Packet_GtTileEntityGuiRequest;
-import gregtech.common.GT_Proxy;
-
-/**
- * Let's you access a GregTech IGregTechTileEntity's covers as tabs on the GUI's sides
- */
-public class GT_GuiCoverTabLine extends GT_GuiTabLine {
-
- // Names of the block a cover could be on
- private static final String[] SIDES = new String[] { "GT5U.interface.coverTabs.down", "GT5U.interface.coverTabs.up",
- "GT5U.interface.coverTabs.north", "GT5U.interface.coverTabs.south", "GT5U.interface.coverTabs.west",
- "GT5U.interface.coverTabs.east" };
-
- // Not sure if there's a point in JIT translation but that's what this is
- private final String[] translatedSides;
- private final IGregTechTileEntity tile;
- private final int colorization;
-
- /**
- * Let's you access an IGregTechTileEntity's covers as tabs on the GUI's sides
- *
- * @param gui GT_ITabRenderer gui which this tab line attaches to
- * @param tabLineLeft left position of the tab line in relation to the gui
- * @param tabLineTop top position of the tab line in relation to the gui
- * @param tabHeight height of a tab
- * @param tabWidth width of a tab
- * @param tabSpacing pixels between each tab
- * @param xDir whether to extend the line horizontally to the right (NORMAL), the left (INVERSE) or not at
- * all (NONE)
- * @param yDir whether to extend the line vertically down (NORMAL), up (INVERSE) or not at all (NONE)
- * @param displayMode whether to display on the left side of the GT_ITabRenderer (NORMAL), on it's right side
- * (INVERSE) or not at all (NONE)
- * @param tabBackground the set of textures used to draw this tab line's tab backgrounds
- * @param tile The IGregTechTileEntity the covers of which we are accessing
- * @param colorization The colorization of the GUI we are adding tabs to
- */
- public GT_GuiCoverTabLine(GT_GUIContainerMetaTile_Machine gui, int tabLineLeft, int tabLineTop, int tabHeight,
- int tabWidth, int tabSpacing, DisplayStyle xDir, DisplayStyle yDir, DisplayStyle displayMode,
- GT_GuiTabIconSet tabBackground, IGregTechTileEntity tile, int colorization) {
- super(gui, 6, tabLineLeft, tabLineTop, tabHeight, tabWidth, tabSpacing, xDir, yDir, displayMode, tabBackground);
- this.tile = tile;
- this.colorization = colorization;
- this.translatedSides = new String[6];
- setupTabs();
- }
-
- /**
- * Add a tab for each existing cover on this IGregTechTileEntity at creation time
- */
- private void setupTabs() {
- for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
- final ItemStack cover = tile.getCoverItemAtSide(side);
- if (cover != null) {
- addCoverToTabs(side, cover);
- }
- }
- }
-
- @Override
- protected void drawBackground(float parTicks, int mouseX, int mouseY) {
- // Apply this tile's coloration to draw the background
- GL11.glColor3ub(
- (byte) ((colorization >> 16) & 0xFF),
- (byte) ((colorization >> 8) & 0xFF),
- (byte) (colorization & 0xFF));
- super.drawBackground(parTicks, mouseX, mouseY);
- }
-
- @Override
- protected void tabClicked(int tabId, int mouseButton) {
- if (mouseButton == 0 && mTabs[tabId].enabled) {
- GT_Values.NW.sendToServer(
- new GT_Packet_GtTileEntityGuiRequest(
- this.tile.getXCoord(),
- this.tile.getYCoord(),
- this.tile.getZCoord(),
- tabId + GT_Proxy.GUI_ID_COVER_SIDE_BASE,
- this.tile.getWorld().provider.dimensionId,
- Minecraft.getMinecraft().thePlayer.getEntityId(),
- 0));
- }
- }
-
- /**
- * Add the cover on this side of the IGregTechTileEntity to the tabs
- *
- * @param side side to apply the cover to
- * @param cover cover to add
- */
- private void addCoverToTabs(ForgeDirection side, ItemStack cover) {
- final boolean enabled = this.tile.getCoverBehaviorAtSideNew(side)
- .hasCoverGUI();
- final int ordinalSide = side.ordinal();
- this.setTab(ordinalSide, cover, null, getTooltipForCoverTab(side, cover, enabled));
- this.setTabEnabled(ordinalSide, enabled);
- }
-
- /**
- * Decorate the cover's tooltips according to the side it's on and on whether the tab is enabled or not
- *
- * @param side side
- * @param cover cover which tooltip to decorate
- * @param enabled if the tab is enabled
- * @return This cover tab's tooltip
- */
- private String[] getTooltipForCoverTab(ForgeDirection side, ItemStack cover, boolean enabled) {
- final List<String> tooltip = cover.getTooltip(Minecraft.getMinecraft().thePlayer, true);
- tooltip.set(
- 0,
- (enabled ? EnumChatFormatting.UNDERLINE : EnumChatFormatting.DARK_GRAY) + getSideDescription(side)
- + (enabled ? EnumChatFormatting.RESET + ": " : ": " + EnumChatFormatting.RESET)
- + tooltip.get(0));
- return tooltip.toArray(new String[0]);
- }
-
- /**
- * Get the translated name for a side of the IGregTechTileEntity
- *
- * @param side side of the entity
- * @return translated name for a side of the IGregTechTileEntity
- */
- private String getSideDescription(ForgeDirection side) {
- final int ordinalSide = side.ordinal();
- if (ordinalSide < SIDES.length) {
- if (this.translatedSides[ordinalSide] == null) {
- this.translatedSides[ordinalSide] = StatCollector.translateToLocal(SIDES[ordinalSide]);
- }
- return this.translatedSides[ordinalSide];
- }
- return null;
- }
-
- /**
- * Hide any NEI slots that would intersect with a cover tab
- */
- static class CoverTabLineNEIHandler extends INEIGuiAdapter {
-
- @Override
- public boolean hideItemPanelSlot(GuiContainer gui, int x, int y, int w, int h) {
- final Rectangle neiSlotArea = new Rectangle(x, y, w, h);
- if (gui instanceof GT_GUIContainerMetaTile_Machine) {
- final GT_GuiTabLine tabLine = ((GT_GUIContainerMetaTile_Machine) gui).coverTabs;
- if (!tabLine.visible) {
- return false;
- }
- for (int i = 0; i < tabLine.mTabs.length; i++) {
- if (tabLine.mTabs[i] != null && tabLine.mTabs[i].getBounds()
- .intersects(neiSlotArea)) {
- return true;
- }
- }
- }
- return false;
- }
- }
-
- static {
- API.registerNEIGuiHandler(new CoverTabLineNEIHandler());
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java
deleted file mode 100644
index 9f4287a65b..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-import java.util.List;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.item.ItemBlock;
-import net.minecraft.item.ItemStack;
-
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.opengl.GL12;
-
-import codechicken.lib.gui.GuiDraw;
-import gregtech.api.interfaces.IGuiScreen;
-import gregtech.api.util.GT_UtilityClient;
-
-public class GT_GuiFakeItemButton implements IGuiScreen.IGuiElement {
-
- private GT_GuiIcon bgIcon;
- private ItemStack item;
- private final IGuiScreen gui;
- private int xPosition, yPosition;
- private List<String> itemTooltips;
- private final GT_GuiTooltip tooltip = new GT_GuiTooltip(null) {
-
- @Override
- public List<String> getToolTipText() {
- return itemTooltips;
- }
-
- @Override
- public boolean isDelayed() {
- return false;
- }
-
- @Override
- public Rectangle getBounds() {
- return GT_GuiFakeItemButton.this.getBounds();
- }
- };
- private final Rectangle rectangle;
- private boolean mimicSlot;
-
- public GT_GuiFakeItemButton(IGuiScreen gui, int x, int y, GT_GuiIcon bgIcon) {
- this.gui = gui;
- this.bgIcon = bgIcon;
- item = null;
- rectangle = new Rectangle(x, y, 18, 18);
- gui.addElement(this);
- }
-
- public GT_GuiFakeItemButton setItem(ItemStack i) {
- item = i;
- if (getMimicSlot()) updateTooltip();
- return this;
- }
-
- private void updateTooltip() {
- itemTooltips = item == null ? null : GT_UtilityClient.getTooltip(item, true);
- }
-
- public ItemStack getItem() {
- return item;
- }
-
- public GT_GuiFakeItemButton setMimicSlot(boolean mimicSlot) {
- if (mimicSlot != this.mimicSlot) {
- if (mimicSlot) {
- updateTooltip();
- gui.addToolTip(tooltip);
- } else {
- gui.removeToolTip(tooltip);
- }
- this.mimicSlot = mimicSlot;
- }
- return this;
- }
-
- public boolean getMimicSlot() {
- return mimicSlot;
- }
-
- public GT_GuiIcon getBgIcon() {
- return bgIcon;
- }
-
- public GT_GuiFakeItemButton setBgIcon(GT_GuiIcon bgIcon) {
- this.bgIcon = bgIcon;
- return this;
- }
-
- @Override
- public void onInit() {
- xPosition = rectangle.x + gui.getGuiLeft();
- yPosition = rectangle.y + gui.getGuiTop();
- }
-
- @Override
- public void onRemoved() {
- if (mimicSlot) gui.removeToolTip(tooltip);
- }
-
- @Override
- public void draw(int mouseX, int mouseY, float parTicks) {
- GL11.glColor4f(1, 1, 1, 1);
- GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
-
- if (bgIcon != null) {
- GT_GuiIcon.render(bgIcon, xPosition - 1, yPosition - 1, 18, 18, 0, true);
- }
-
- if (item != null) {
- if (item.getItem() instanceof ItemBlock) {
- GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
- GL11.glEnable(GL12.GL_RESCALE_NORMAL);
- }
- gui.getItemRenderer()
- .renderItemAndEffectIntoGUI(
- gui.getFontRenderer(),
- Minecraft.getMinecraft()
- .getTextureManager(),
- item,
- xPosition,
- yPosition);
-
- if (item.getItem() instanceof ItemBlock) GL11.glPopAttrib();
- }
-
- if (getMimicSlot()) if (getBounds().contains(mouseX - gui.getGuiLeft(), mouseY - gui.getGuiTop())) {
- GL11.glDisable(GL11.GL_LIGHTING);
- GL11.glDisable(GL11.GL_DEPTH_TEST);
- GL11.glColorMask(true, true, true, false);
- GuiDraw.drawGradientRect(xPosition, yPosition, 16, 16, 0x80ffffff, 0x80ffffff);
- GL11.glColorMask(true, true, true, true);
- // no glEnable, state will be recovered by glPopAttrib
- }
-
- GL11.glPopAttrib();
- }
-
- public Rectangle getBounds() {
- return rectangle;
- }
-
- public void setX(int x) {
- rectangle.x = x;
- }
-
- public void setY(int y) {
- rectangle.y = y;
- }
-
- public void setWidth(int width) {
- rectangle.width = width;
- }
-
- public void setHeight(int height) {
- rectangle.height = height;
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java
deleted file mode 100644
index 66ab27356e..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import static gregtech.api.enums.Mods.GregTech;
-
-import java.util.Arrays;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.Tessellator;
-import net.minecraft.util.ResourceLocation;
-
-import gregtech.api.interfaces.IGuiIcon;
-
-public enum GT_GuiIcon implements IGuiIcon {
-
- BUTTON_NORMAL(0, 0, 0),
- BUTTON_DOWN(0, 32, 0),
- BUTTON_HIGHLIGHT(0, 32 * 2, 0),
- BUTTON_HIGHLIGHT_DOWN(0, 32 * 3, 0),
- BUTTON_DISABLED(0, 32 * 4, 0),
-
- DISABLE(0, 0, 32),
- REDSTONE_OFF(0, 32, 32),
- REDSTONE_ON(0, 32 * 2, 32),
- CHECKMARK(0, 32 * 3, 32),
- CROSS(0, 32 * 4, 32),
- WHITELIST(0, 32 * 5, 32),
- BLACKLIST(0, 32 * 6, 32),
- PROGRESS(0, 32 * 7, 32),
-
- EXPORT(0, 0, 32 * 2),
- IMPORT(0, 32, 32 * 2),
- ALLOW_INPUT(0, 32 * 2, 32 * 2),
- BLOCK_INPUT(0, 32 * 3, 32 * 2),
- GREEN_ARROW_UP(0, 32 * 4, 32 * 2),
- GREEN_ARROW_DOWN(0, 32 * 5, 32 * 2),
- CYCLIC(0, 32 * 6, 32 * 2),
-
- AND_GATE(0, 0, 32 * 3),
- NAND_GATE(0, 32, 32 * 3),
- OR_GATE(0, 32 * 2, 32 * 3),
- NOR_GATE(0, 32 * 3, 32 * 3),
- ANALOG_MODE(0, 32 * 4, 32 * 3),
-
- SLOT_DARKGRAY(1, 176, 0, 18, 18),
- SLOT_GRAY(1, 176, 18, 18, 18),
-
- TAB_NORMAL(2, 0, 0, 18, 20),
- TAB_HIGHLIGHT(2, 18, 0, 18, 20),
- TAB_DISABLED(2, 18 * 2, 0, 18, 20),
- TAB_NORMAL_BRONZE(2, 0, 20, 18, 20),
- TAB_HIGHLIGHT_BRONZE(2, 18, 20, 18, 20),
- TAB_DISABLED_BRONZE(2, 18 * 2, 20, 18, 20),
- TAB_NORMAL_STEEL(2, 0, 2 * 20, 18, 20),
- TAB_HIGHLIGHT_STEEL(2, 18, 2 * 20, 18, 20),
- TAB_DISABLED_STEEL(2, 18 * 2, 2 * 20, 18, 20),
- TAB_NORMAL_BRICK(2, 0, 3 * 20, 18, 20),
- TAB_HIGHLIGHT_BRICK(2, 18, 3 * 20, 18, 20),
- TAB_DISABLED_BRICK(2, 18 * 2, 3 * 20, 18, 20),
- TAB_INFO_GRAY(2, 220, 0, 18, 20),
- TAB_INFO_BLUE(2, 220 + 18, 0, 18, 20),;
-
- private static final int T_SIZE = 256;
- private static ResourceLocation[] TEXTURES = { new ResourceLocation(GregTech.ID, "textures/gui/GuiButtons.png"),
- new ResourceLocation(GregTech.ID, "textures/gui/GuiCover.png"),
- new ResourceLocation(GregTech.ID, "textures/gui/GuiTabs.png"), };
-
- public final int x, y, width, height;
- public final IGuiIcon overlay;
- private final int texID;
-
- GT_GuiIcon(int texID, int x, int y, int width, int height, IGuiIcon overlay) {
- this.x = x;
- this.y = y;
- this.width = width;
- this.height = height;
- this.overlay = overlay;
- this.texID = texID;
- }
-
- GT_GuiIcon(int texID, int x, int y) {
- this(texID, x, y, 32, 32, null);
- }
-
- GT_GuiIcon(int texID, int x, int y, int width, int height) {
- this(texID, x, y, width, height, null);
- }
-
- public static void render(IGuiIcon icon, double x, double y, double width, double height, double zLevel,
- boolean doDraw) {
- render(icon, x, y, width, height, zLevel, doDraw, false);
- }
-
- public static void render(IGuiIcon icon, double x, double y, double width, double height, double zLevel,
- boolean doDraw, boolean flipHoritontally) {
- Tessellator tess = Tessellator.instance;
- if (doDraw) {
- Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURES[icon.getTexId()]);
- tess.startDrawingQuads();
- }
- double minU = (double) (icon.getX() + (flipHoritontally ? icon.getWidth() : 0)) / T_SIZE;
- double maxU = (double) (icon.getX() + (flipHoritontally ? 0 : icon.getWidth())) / T_SIZE;
- double minV = (double) icon.getY() / T_SIZE;
- double maxV = (double) (icon.getY() + icon.getHeight()) / T_SIZE;
- tess.addVertexWithUV(x, y + height, zLevel, minU, maxV);
- tess.addVertexWithUV(x + width, y + height, zLevel, maxU, maxV);
- tess.addVertexWithUV(x + width, y + 0, zLevel, maxU, minV);
- tess.addVertexWithUV(x, y + 0, zLevel, minU, minV);
-
- if (icon.getOverlay() != null) render(icon.getOverlay(), x, y, width, height, zLevel, false);
-
- if (doDraw) tess.draw();
- }
-
- /**
- * This is intended to enable addon mods to register additional textures. They can then add to this enum using
- * EnumHelper.addEnum or by creating their enum that implements IGuiIcon (still requires adding a texture here)
- *
- * @param location location of the texture to add
- */
- public static void addTextures(ResourceLocation... location) {
- if (location == null || location.length == 0) return;
-
- int startIndex = TEXTURES.length;
- TEXTURES = Arrays.copyOf(TEXTURES, location.length);
- System.arraycopy(location, 0, TEXTURES, startIndex, location.length);
- }
-
- @Override
- public int getX() {
- return this.x;
- }
-
- @Override
- public int getY() {
- return this.y;
- }
-
- @Override
- public int getWidth() {
- return this.width;
- }
-
- @Override
- public int getHeight() {
- return this.height;
- }
-
- @Override
- public int getTexId() {
- return this.texID;
- }
-
- @Override
- public IGuiIcon getOverlay() {
- return this.overlay;
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java
deleted file mode 100644
index d4bfe31404..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiButton;
-
-import org.lwjgl.opengl.GL11;
-
-import gregtech.api.interfaces.IGuiScreen;
-
-public class GT_GuiIconButton extends GuiButton implements IGuiScreen.IGuiElement {
-
- public static final int DEFAULT_WIDTH = 16;
- public static final int DEFAULT_HEIGHT = 16;
-
- protected GT_GuiIcon icon;
- private final int x0;
- private final int y0;
- protected final IGuiScreen gui;
-
- private GT_GuiTooltip tooltip;
-
- public GT_GuiIconButton(IGuiScreen gui, int id, int x, int y, GT_GuiIcon icon) {
- super(id, x, y, DEFAULT_WIDTH, DEFAULT_HEIGHT, "");
- this.gui = gui;
- this.icon = icon;
- this.x0 = x;
- this.y0 = y;
- gui.addElement(this);
- }
-
- @Override
- public void onInit() {
- if (tooltip != null) gui.addToolTip(tooltip);
- xPosition = x0 + gui.getGuiLeft();
- yPosition = y0 + gui.getGuiTop();
- }
-
- @Override
- public void draw(int mouseX, int mouseY, float parTicks) {
- drawButton(Minecraft.getMinecraft(), mouseX, mouseY);
- }
-
- @Override
- public void drawButton(Minecraft mc, int mouseX, int mouseY) {
- if (this.tooltip != null) this.tooltip.enabled = true;
-
- if (this.visible) {
- // moused over
- this.field_146123_n = mouseX >= this.xPosition && mouseY >= this.yPosition
- && mouseX < this.xPosition + width
- && mouseY < this.yPosition + height;
-
- mouseDragged(mc, mouseX, mouseY);
-
- GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
-
- int x = xPosition;
- int y = yPosition;
- if (!this.field_146123_n) {
- // GL11.glColor4f(200F/255F, 210F/255F, 1, 1);
- } else GL11.glColor4f(1, 1, 1, 1);
-
- GT_GuiIcon.render(getButtonTexture(this.field_146123_n), x, y, width, height, 0, true);
-
- GL11.glColor4f(1, 1, 1, 1);
- if (icon != null) {
- GT_GuiIcon.render(icon, x, y, width, height, 0, true);
- }
-
- GL11.glPopAttrib();
- }
- }
-
- @Override
- public void mouseReleased(int mouseX, int mouseY) {
- this.gui.clearSelectedButton();
- if (mousePressed(Minecraft.getMinecraft(), mouseX, mouseY)) this.gui.buttonClicked(this);
- }
-
- public GT_GuiIcon getButtonTexture(boolean mouseOver) {
- if (!enabled) return GT_GuiIcon.BUTTON_DISABLED;
- if (this.equals(this.gui.getSelectedButton()))
- return mouseOver ? GT_GuiIcon.BUTTON_HIGHLIGHT_DOWN : GT_GuiIcon.BUTTON_DOWN;
-
- return mouseOver ? GT_GuiIcon.BUTTON_HIGHLIGHT : GT_GuiIcon.BUTTON_NORMAL;
- }
-
- public GT_GuiIcon getIcon() {
- return icon;
- }
-
- public GT_GuiIconButton setIcon(GT_GuiIcon icon) {
- this.icon = icon;
- return this;
- }
-
- public GT_GuiTooltip getTooltip() {
- return tooltip;
- }
-
- public GT_GuiIconButton setTooltipText(String... text) {
- if (tooltip == null) tooltip = new GT_GuiTooltip(getBounds(), text);
- else tooltip.setToolTipText(text);
- return this;
- }
-
- public Rectangle getBounds() {
- return new Rectangle(x0, y0, width, height);
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiIconCheckButton.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiIconCheckButton.java
deleted file mode 100644
index 5b5007fef3..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiIconCheckButton.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import gregtech.api.interfaces.IGuiScreen;
-
-public class GT_GuiIconCheckButton extends GT_GuiIconButton {
-
- private final GT_GuiIcon checkedIcon;
- private final GT_GuiIcon normalIcon;
- private final String checkedTooltip;
- private final String normalTooltip;
- private boolean checked = false;
-
- public GT_GuiIconCheckButton(IGuiScreen gui, int id, int x, int y, GT_GuiIcon checkedIcon, GT_GuiIcon normalIcon) {
- this(gui, id, x, y, checkedIcon, normalIcon, null, null);
- }
-
- public GT_GuiIconCheckButton(IGuiScreen gui, int id, int x, int y, GT_GuiIcon checkedIcon, GT_GuiIcon normalIcon,
- String checkedTooltip, String normalTooltip) {
- super(gui, id, x, y, normalIcon);
- this.checkedIcon = checkedIcon;
- this.normalIcon = normalIcon;
- this.checkedTooltip = checkedTooltip;
- this.normalTooltip = normalTooltip;
- }
-
- @Override
- public GT_GuiIcon getButtonTexture(boolean mouseOver) {
- if (!enabled) return GT_GuiIcon.BUTTON_DISABLED;
- if (this.equals(super.gui.getSelectedButton()))
- return mouseOver ? GT_GuiIcon.BUTTON_HIGHLIGHT_DOWN : GT_GuiIcon.BUTTON_DOWN;
- return mouseOver ? GT_GuiIcon.BUTTON_HIGHLIGHT : GT_GuiIcon.BUTTON_NORMAL;
- }
-
- public boolean isChecked() {
- return checked;
- }
-
- public void setChecked(boolean checked) {
- super.setIcon(checked ? checkedIcon : normalIcon);
- super.setTooltipText(checked ? checkedTooltip : normalTooltip);
- this.checked = checked;
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiIntegerTextBox.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiIntegerTextBox.java
deleted file mode 100644
index 2d3c7374bd..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiIntegerTextBox.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiTextField;
-
-import gregtech.api.interfaces.IGuiScreen;
-
-public class GT_GuiIntegerTextBox extends GuiTextField implements IGuiScreen.IGuiElement {
-
- private final int x0, y0;
- private final IGuiScreen gui;
- public final int id;
- private boolean enabled;
-
- public GT_GuiIntegerTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) {
- super(Minecraft.getMinecraft().fontRenderer, x, y, width, height);
- super.setText("");
- this.id = id;
- x0 = x;
- y0 = y;
- this.gui = gui;
- enabled = true;
- gui.addElement(this);
- }
-
- @Override
- public void onInit() {
- xPosition = x0 + gui.getGuiLeft();
- yPosition = y0 + gui.getGuiTop();
- }
-
- @Override
- public void draw(int mouseX, int mouseY, float parTicks) {
- super.drawTextBox();
- }
-
- public Rectangle getBounds() {
- return new Rectangle(x0, y0, width, height);
- }
-
- public boolean validChar(char c, int key) {
- return Character.isDigit(c);
- }
-
- @Override
- public boolean textboxKeyTyped(char c, int key) {
- if (validChar(c, key) || c == 1
- || c == 3
- || c == 22
- || c == 24
- || key == 14
- || key == 199
- || key == 203
- || key == 205
- || key == 207
- || key == 211) {
- return super.textboxKeyTyped(c, key);
- }
- return false;
- }
-
- @Override
- public void setEnabled(boolean p_146184_1_) {
- super.setEnabled(p_146184_1_);
- enabled = p_146184_1_;
- }
-
- public boolean isEnabled() {
- return enabled;
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiSlotTooltip.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiSlotTooltip.java
deleted file mode 100644
index 015c8c7697..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiSlotTooltip.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-
-import net.minecraft.inventory.Slot;
-
-import gregtech.api.util.GT_TooltipDataCache.TooltipData;
-
-public class GT_GuiSlotTooltip extends GT_GuiTooltip {
-
- private final Slot slot;
-
- public GT_GuiSlotTooltip(Slot slot, TooltipData data) {
- super(new Rectangle(slot.xDisplayPosition - 1, slot.yDisplayPosition - 1, 18, 18), data);
- this.slot = slot;
- }
-
- @Override
- protected void onTick() {
- super.onTick();
- // If disabled by super, stay disabled.
- this.enabled = this.enabled && this.slot.getStack() == null;
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiSmartTooltip.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiSmartTooltip.java
deleted file mode 100644
index ffae5c30e6..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiSmartTooltip.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-
-import gregtech.api.util.GT_TooltipDataCache.TooltipData;
-
-public class GT_GuiSmartTooltip extends GT_GuiTooltip {
-
- public interface TooltipVisibilityProvider {
-
- boolean shouldShowTooltip();
- }
-
- private final TooltipVisibilityProvider visibilityProvider;
-
- public GT_GuiSmartTooltip(Rectangle bounds, TooltipVisibilityProvider visibilityProvider, TooltipData data) {
- super(bounds, data);
- this.visibilityProvider = visibilityProvider;
- }
-
- @Override
- protected void onTick() {
- super.onTick();
- // If disabled by super, stay disabled.
- this.enabled = this.enabled && this.visibilityProvider.shouldShowTooltip();
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiTab.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiTab.java
deleted file mode 100644
index d06c2bd2eb..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiTab.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.item.ItemBlock;
-import net.minecraft.item.ItemStack;
-
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.opengl.GL12;
-
-import gregtech.api.gui.widgets.GT_GuiTabLine.GT_GuiTabIconSet;
-import gregtech.api.gui.widgets.GT_GuiTabLine.GT_ITabRenderer;
-import gregtech.api.interfaces.IGuiIcon;
-
-/**
- * A tab to be attached to a tab line
- */
-public class GT_GuiTab {
-
- private static final int SLOT_SIZE = 18;
-
- public boolean visible = true, mousedOver, enabled = true;
-
- private Rectangle bounds;
- private final GT_GuiTabIconSet tabBackground;
- private final ItemStack item;
- private final GT_ITabRenderer gui;
- private GT_GuiTooltip tooltip;
- private final IGuiIcon overlay;
- private final boolean flipHorizontally;
-
- /**
- * A tab to be attached to a tab line
- *
- * @param gui IGregTechTileEntity the tab line this tab belongs to is attached to
- * @param id both the ID and position in the tab line of this tab. Not used, kept for compatibility.
- * @param bounds bounds of this tab
- * @param tabBackground set of background textures
- * @param item item to draw atop the background texture, not colored
- * @param overlay texture to draw atop the background texture, not colored
- * @param tooltipText tooltip of this tab
- * @param flipHorizontally whether to draw this tab on the right side of the IGregTechTileEntity
- */
- public GT_GuiTab(GT_ITabRenderer gui, int id, Rectangle bounds, GT_GuiTabIconSet tabBackground, ItemStack item,
- IGuiIcon overlay, String[] tooltipText, boolean flipHorizontally) {
- this.gui = gui;
- this.bounds = bounds;
- this.item = item;
- this.tabBackground = tabBackground;
- this.overlay = overlay;
- if (tooltipText != null) {
- setTooltipText(tooltipText);
- }
- this.flipHorizontally = flipHorizontally;
- }
-
- public GT_GuiTab(GT_ITabRenderer gui, int id, Rectangle bounds, GT_GuiTabIconSet tabBackground) {
- this(gui, id, bounds, tabBackground, null, null, null, false);
- }
-
- /**
- * Set this tab's tooltip text
- *
- * @param text text to set
- * @return This tab for chaining
- */
- public GT_GuiTab setTooltipText(String... text) {
- if (tooltip == null) {
- tooltip = new GT_GuiTooltip(bounds, text);
- gui.addToolTip(tooltip);
- } else {
- tooltip.setToolTipText(text);
- }
- return this;
- }
-
- /**
- * @return This tab's tooltip object
- */
- public GT_GuiTooltip getTooltip() {
- return tooltip;
- }
-
- /**
- * Draw the background texture for this tab
- *
- * @param mouseX not used, likely kept for backward compatibility
- * @param mouseY not used, likely kept for backward compatibility
- * @param parTicks not used, likely kept for backward compatibility
- */
- public void drawBackground(int mouseX, int mouseY, float parTicks) {
- if (this.visible) {
- GT_GuiIcon.render(
- getBackgroundTexture(),
- bounds.x,
- bounds.y,
- bounds.width,
- bounds.height,
- 1,
- true,
- this.flipHorizontally);
- }
- }
-
- /**
- * Draw overlay textures and items atop the background texture
- *
- * @param mouseX X mouse coordinate
- * @param mouseY Y mouse coordinate
- * @param parTicks not used, likely kept for backward compatibility
- */
- public void drawOverlays(int mouseX, int mouseY, float parTicks) {
- this.mousedOver = bounds.contains(mouseX, mouseY);
-
- if (this.tooltip != null) {
- this.tooltip.enabled = this.visible;
- }
-
- if (this.visible) {
- if (overlay != null) {
- GL11.glColor4f(1, 1, 1, 1);
- GT_GuiIcon.render(overlay, bounds.x, bounds.y, bounds.width, bounds.height, 1, true);
- }
- if (item != null) {
- GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
-
- if (item.getItem() instanceof ItemBlock) {
- GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
- GL11.glEnable(GL12.GL_RESCALE_NORMAL);
- }
- int margin = (bounds.height - SLOT_SIZE);
- gui.getItemRenderer()
- .renderItemAndEffectIntoGUI(
- gui.getFontRenderer(),
- Minecraft.getMinecraft()
- .getTextureManager(),
- item,
- bounds.x + (this.flipHorizontally ? 0 : margin),
- bounds.y + margin);
-
- if (item.getItem() instanceof ItemBlock) GL11.glPopAttrib();
-
- GL11.glPopAttrib();
- }
- }
- }
-
- /**
- * @return the texture this tab should currently use as it's background
- */
- protected IGuiIcon getBackgroundTexture() {
- if (!enabled) return tabBackground.disabled;
-
- return mousedOver ? tabBackground.highlight : tabBackground.normal;
- }
-
- /**
- * @return the screen space occupied by this tab
- */
- public Rectangle getBounds() {
- return this.bounds;
- }
-
- /**
- * Reposition this tab on the screen
- *
- * @param xPos X tab coordinate
- * @param yPos Y tab coordinate
- */
- public void setPosition(int xPos, int yPos) {
- this.bounds = new Rectangle(xPos, yPos, bounds.width, bounds.height);
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiTabLine.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiTabLine.java
deleted file mode 100644
index 950478cdfa..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiTabLine.java
+++ /dev/null
@@ -1,274 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.renderer.entity.RenderItem;
-import net.minecraft.item.ItemStack;
-
-import org.lwjgl.opengl.GL11;
-
-import gregtech.api.interfaces.IGuiIcon;
-
-/**
- * Draws clickable and configurable tabs on the left or right side of another GUI
- */
-public class GT_GuiTabLine {
-
- /**
- * Defines a set of textures a tab line can use to render it's tab backgrounds
- */
- public static class GT_GuiTabIconSet {
-
- public IGuiIcon disabled;
- public IGuiIcon normal;
- public IGuiIcon highlight;
-
- public GT_GuiTabIconSet(IGuiIcon normalIcon, IGuiIcon highlightIcon, IGuiIcon disabledIcon) {
- this.normal = normalIcon;
- this.highlight = highlightIcon;
- this.disabled = disabledIcon;
- }
- }
-
- /**
- * Controls the rendering style of the tab line
- */
- public enum DisplayStyle {
-
- NONE((byte) 0),
- NORMAL((byte) 1),
- INVERSE((byte) -1);
-
- private final byte value;
-
- DisplayStyle(byte value) {
- this.value = value;
- }
-
- public byte getValue() {
- return value;
- }
- }
-
- /**
- * A GUI should implement these methods as well as call the tab line's onMouseClicked, onInit and drawTabs for the
- * tab line to attach to it properly.
- */
- public interface GT_ITabRenderer {
-
- int getGuiLeft();
-
- int getGuiTop();
-
- int getXSize();
-
- RenderItem getItemRenderer();
-
- FontRenderer getFontRenderer();
-
- void addToolTip(GT_GuiTooltip tooltip);
-
- boolean removeToolTip(GT_GuiTooltip tooltip);
- }
-
- // The tabs are arranged according to their index in this array
- protected final GT_GuiTab[] mTabs;
-
- private final int tabLineLeft;
- private final int tabLineTop;
- private final int tabHeight;
- private final int tabWidth;
- private final int tabSpacing;
-
- // In which direction to draw the tab line
- private final DisplayStyle xDir;
- private final DisplayStyle yDir;
-
- // Whether to display on the right side of the GT_ITabRenderer instead of left
- protected final boolean flipHorizontally;
- protected final boolean visible;
-
- private final GT_GuiTabIconSet tabBackground;
- private final GT_ITabRenderer gui;
-
- /**
- * Draws clickable and configurable tabs on the left or right side of a GT_ITabRenderer
- *
- * @param gui GT_ITabRenderer gui which this tab line attaches to
- * @param numTabs number of tab positions in this tab line
- * @param tabLineLeft left position of the tab line in relation to the gui
- * @param tabLineTop top position of the tab line in relation to the gui
- * @param tabHeight height of a tab
- * @param tabWidth width of a tab
- * @param tabSpacing pixels between each tab
- * @param xDir whether to extend the line horizontally to the right (NORMAL), the left (INVERSE) or not at
- * all (NONE)
- * @param yDir whether to extend the line vertically down (NORMAL), up (INVERSE) or not at all (NONE)
- * @param displayMode whether to display on the left side of the GT_ITabRenderer (NORMAL), on it's right side
- * (INVERSE) or not at all (NONE)
- * @param tabBackground the set of textures used to draw this tab line's tab backgrounds
- */
- public GT_GuiTabLine(GT_ITabRenderer gui, int numTabs, int tabLineLeft, int tabLineTop, int tabHeight, int tabWidth,
- int tabSpacing, DisplayStyle xDir, DisplayStyle yDir, DisplayStyle displayMode,
- GT_GuiTabIconSet tabBackground) {
- this.gui = gui;
- this.mTabs = new GT_GuiTab[numTabs];
- this.tabLineLeft = tabLineLeft;
- this.tabLineTop = tabLineTop;
- this.tabHeight = tabHeight;
- this.tabWidth = tabWidth;
- this.tabSpacing = tabSpacing;
- this.xDir = xDir;
- this.yDir = yDir;
- this.tabBackground = tabBackground;
- this.flipHorizontally = displayMode == DisplayStyle.INVERSE;
- this.visible = !(displayMode == DisplayStyle.NONE);
- }
-
- /**
- * Creates a new tab at the specified position with the given parameters. This class handles the positioning.
- *
- * @param tabId tab ID
- * @param item item to draw atop the background texture, not colored
- * @param overlay texture to draw atop the background texture, not colored
- * @param text tooltip of this tab
- */
- public void setTab(int tabId, ItemStack item, IGuiIcon overlay, String[] text) {
- mTabs[tabId] = new GT_GuiTab(
- this.gui,
- tabId,
- getBoundsForTab(tabId),
- this.tabBackground,
- item,
- overlay,
- text,
- this.flipHorizontally);
- }
-
- /**
- * Get the bounds a given tab should occupy
- *
- * @param tabId tab ID
- * @return tab bounds
- */
- protected Rectangle getBoundsForTab(int tabId) {
- return new Rectangle(getTabX(tabId), getTabY(tabId), this.tabWidth, this.tabHeight);
- }
-
- /**
- * Enable or disable a tab. Disabled tabs have a dark background.
- *
- * @param tabId tab ID
- * @param enable true to enable, false to disable
- */
- public void setTabEnabled(int tabId, boolean enable) {
- if (mTabs[tabId] != null) {
- mTabs[tabId].enabled = enable;
- }
- }
-
- /**
- * Draw the tabs for this tab bar GT_ITabRenderer must call this method on drawGuiContainerBackgroundLayer or on
- * drawScreen.
- *
- * @param parTicks
- */
- public void drawTabs(float parTicks, int mouseX, int mouseY) {
- if (this.visible) {
- GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- drawBackground(parTicks, mouseX, mouseY);
- drawOverlays(parTicks, mouseX, mouseY);
- GL11.glPopAttrib();
- }
- }
-
- /**
- * Draw the tab's backgrounds first
- *
- * @param parTicks not used, likely kept for compatibility
- * @param mouseX mouse X position
- * @param mouseY mouse Y position
- */
- protected void drawOverlays(float parTicks, int mouseX, int mouseY) {
- for (GT_GuiTab mTab : mTabs) {
- if (mTab != null) {
- mTab.drawOverlays(mouseX, mouseY, parTicks);
- }
- }
- }
-
- /**
- * Draw anything that overlays the tab's background texture
- *
- * @param parTicks not used, likely kept for compatibility
- * @param mouseX mouse X position
- * @param mouseY mouse Y position
- */
- protected void drawBackground(float parTicks, int mouseX, int mouseY) {
- for (GT_GuiTab mTab : mTabs) {
- if (mTab != null) {
- mTab.drawBackground(mouseX, mouseY, parTicks);
- }
- }
- }
-
- /**
- * Call tabClick for every tab that was clicked. GT_ITabRenderer must call this method on mouseClicked.
- *
- * @param mouseX mouse X position
- * @param mouseY mouse Y position
- * @param mouseButton which mouse button was used to click
- */
- public void onMouseClicked(int mouseX, int mouseY, int mouseButton) {
- for (int tabId = 0; tabId < mTabs.length; tabId++) {
- if (mTabs[tabId] != null && mTabs[tabId].getBounds()
- .contains(mouseX, mouseY)) {
- tabClicked(tabId, mouseButton);
- return;
- }
- }
- }
-
- /**
- * Act on a tab being clicked.
- *
- * @param tabId tab ID
- * @param mouseButton which mouse button was used to click
- */
- protected void tabClicked(int tabId, int mouseButton) {}
-
- /**
- * Reposition ourselves whenever the GT_ITabRenderer does so. GT_ITabRenderer must call this method on Init.
- */
- public void onInit() {
- for (int i = 0; i < mTabs.length; i++) {
- if (mTabs[i] != null) {
- mTabs[i].setPosition(getTabX(i), getTabY(i));
- }
- }
- }
-
- /**
- * Get the proper X position for a given tab
- *
- * @param tabId tab ID
- * @return X position of the tab
- */
- private int getTabX(int tabId) {
- return this.gui.getGuiLeft() + (flipHorizontally ? (gui.getXSize() - tabLineLeft - tabWidth) : tabLineLeft)
- + (tabId * (tabWidth + tabSpacing) * xDir.getValue());
- }
-
- /**
- * Get the proper Y position for a given tab
- *
- * @param tabId tab ID
- * @return Y position of the tab
- */
- private int getTabY(int tabId) {
- return this.gui.getGuiTop() + tabLineTop + (tabId * (tabHeight + tabSpacing) * yDir.getValue());
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltip.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltip.java
deleted file mode 100644
index fe20b2b57a..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltip.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.awt.Rectangle;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.lwjgl.input.Keyboard;
-
-import gregtech.api.util.GT_TooltipDataCache.TooltipData;
-
-public class GT_GuiTooltip {
-
- protected final Rectangle bounds;
- protected TooltipData data;
- private List<String> displayedText;
- public boolean enabled = true;
-
- /**
- * Used to create a tooltip that will appear over the specified bounds. This will initially be a "static" tooltip
- * that doesn't respect verbosity levels or respond to the shift key.
- *
- * @param bounds tooltip bounds
- * @param text tooltip text
- */
- public GT_GuiTooltip(Rectangle bounds, String... text) {
- this.bounds = bounds;
- setToolTipText(text);
- }
-
- /**
- * Used to create a tooltip that will appear over the specified bounds. This will initially be a "dynamic" tooltip
- * that respects verbosity levels and responds to the shift key.
- *
- * @param bounds tooltip bounds
- * @param data tooltip data
- */
- public GT_GuiTooltip(Rectangle bounds, TooltipData data) {
- this.bounds = bounds;
- // Trust that the tooltips have already been formatted and colored, just make sure it has no nulls
- this.data = sanitizeTooltipData(data);
- }
-
- private TooltipData sanitizeTooltipData(TooltipData data) {
- if (data.text == null) {
- data.text = Collections.emptyList();
- }
- if (data.shiftText == null) {
- data.shiftText = Collections.emptyList();
- }
- return data;
- }
-
- /**
- * Called before the tooltip manager checks whether this tooltip is enabled
- */
- protected void onTick() {
- // Switch which of our 2 stored texts we're displaying now.
- this.displayedText = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) ? this.data.shiftText : this.data.text;
- // If this text is empty, let's not display a tooltip at all.
- this.enabled = this.displayedText.size() != 0;
- }
-
- /**
- * Called once this tooltip has been determined to be enabled
- */
- protected void updateText() {}
-
- /**
- * Used to set a "static" tooltip that doesn't respect verbosity levels or respond to the shift key
- *
- * @param text tooltip text
- */
- public void setToolTipText(String... text) {
- this.data = formatTooltip(text);
- this.displayedText = data.text;
- }
-
- /**
- * Used to set a "dynamic" tooltip that respects verbosity levels and responds to the shift key
- *
- * @param data tooltip data
- */
- public void setToolTipText(TooltipData data) {
- // Trust that the tooltips have already been formatted and colored, just make sure it has no nulls
- this.data = sanitizeTooltipData(data);
- }
-
- /**
- * Apply tooltip colors in case the text doesn't contain them and return as tooltip data
- *
- * @param text text to apply the colors to
- * @return colored tooltip lines as list
- */
- protected TooltipData formatTooltip(String[] text) {
- List<String> list;
- if (text != null) {
- list = new ArrayList<>(text.length);
- for (String s : text) {
- if (s == null) continue;
- if (list.isEmpty()) list.add("\u00a7f" + s);
- else list.add("\u00a77" + s);
- }
- } else {
- list = Collections.emptyList();
- }
- return new TooltipData(list, list);
- }
-
- public List<String> getToolTipText() {
- return this.displayedText;
- }
-
- public Rectangle getBounds() {
- return bounds;
- }
-
- public boolean isDelayed() {
- return true;
- }
-}
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java
deleted file mode 100644
index 4304ca14fc..0000000000
--- a/src/main/java/gregtech/api/gui/widgets/GT_GuiTooltipManager.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package gregtech.api.gui.widgets;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.minecraft.client.gui.FontRenderer;
-
-public class GT_GuiTooltipManager {
-
- public interface GT_IToolTipRenderer {
-
- int getGuiLeft();
-
- int getGuiTop();
-
- int getXSize();
-
- FontRenderer getFontRenderer();
-
- void drawHoveringText(List<String> text, int mouseX, int mouseY, 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 (tip != null && !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;
-
- mouseX -= render.getGuiLeft();
- mouseY -= render.getGuiTop();
- for (GT_GuiTooltip tip : tips) {
- // Give the tooltip the opportunity to decide whether they should be enabled
- tip.onTick();
- if (tip.enabled && (!tip.isDelayed() || mouseStopped > DELAY)
- && tip.getBounds()
- .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());
- }
-}