| package mekanism.client.gui.element; |
| |
| import java.util.List; |
| |
| import org.lwjgl.opengl.GL11; |
| |
| import mekanism.client.gui.IGuiWrapper; |
| import mekanism.common.ObfuscatedNames; |
| import mekanism.common.util.MekanismUtils; |
| import net.minecraft.client.Minecraft; |
| import net.minecraft.client.gui.FontRenderer; |
| import net.minecraft.client.gui.inventory.GuiContainer; |
| import net.minecraft.util.ResourceLocation; |
| import codechicken.lib.vec.Rectangle4i; |
| import cpw.mods.fml.relauncher.Side; |
| import cpw.mods.fml.relauncher.SideOnly; |
| |
| @SideOnly(Side.CLIENT) |
| public abstract class GuiElement |
| { |
| public static Minecraft mc = Minecraft.getMinecraft(); |
| |
| public ResourceLocation RESOURCE; |
| |
| public IGuiWrapper guiObj; |
| |
| public ResourceLocation defaultLocation; |
| |
| public GuiElement(ResourceLocation resource, IGuiWrapper gui, ResourceLocation def) |
| { |
| RESOURCE = resource; |
| guiObj = gui; |
| defaultLocation = def; |
| } |
| |
| public void displayTooltip(String s, int xAxis, int yAxis) |
| { |
| guiObj.displayTooltip(s, xAxis, yAxis); |
| } |
| |
| public void displayTooltips(List<String> list, int xAxis, int yAxis) |
| { |
| guiObj.displayTooltips(list, xAxis, yAxis); |
| } |
| |
| public void offsetX(int xSize) |
| { |
| if(guiObj instanceof GuiContainer) |
| { |
| try { |
| int size = (Integer)MekanismUtils.getPrivateValue(guiObj, GuiContainer.class, ObfuscatedNames.GuiContainer_xSize); |
| MekanismUtils.setPrivateValue(guiObj, size + xSize, GuiContainer.class, ObfuscatedNames.GuiContainer_xSize); |
| } catch(Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| public void offsetY(int ySize) |
| { |
| if(guiObj instanceof GuiContainer) |
| { |
| try { |
| int size = (Integer)MekanismUtils.getPrivateValue(guiObj, GuiContainer.class, ObfuscatedNames.GuiContainer_ySize); |
| MekanismUtils.setPrivateValue(guiObj, size + ySize, GuiContainer.class, ObfuscatedNames.GuiContainer_ySize); |
| } catch(Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| public void offsetLeft(int guiLeft) |
| { |
| if(guiObj instanceof GuiContainer) |
| { |
| try { |
| int left = (Integer)MekanismUtils.getPrivateValue(guiObj, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft); |
| System.out.println(left + " " + guiLeft); |
| MekanismUtils.setPrivateValue(guiObj, left + guiLeft, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft); |
| } catch(Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| public void offsetTop(int guiTop) |
| { |
| if(guiObj instanceof GuiContainer) |
| { |
| try { |
| int top = (Integer)MekanismUtils.getPrivateValue(guiObj, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop); |
| MekanismUtils.setPrivateValue(guiObj, top + guiTop, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop); |
| } catch(Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| public void renderScaledText(String text, int x, int y, int color, int maxX) |
| { |
| int length = getFontRenderer().getStringWidth(text); |
| |
| if(length <= maxX) |
| { |
| getFontRenderer().drawString(text, x, y, color); |
| } |
| else { |
| float scale = (float)maxX/length; |
| float reverse = 1/scale; |
| float yAdd = 4-(scale*8)/2F; |
| |
| GL11.glPushMatrix(); |
| |
| GL11.glScalef(scale, scale, scale); |
| getFontRenderer().drawString(text, (int)(x*reverse), (int)((y*reverse)+yAdd), color); |
| |
| GL11.glPopMatrix(); |
| } |
| } |
| |
| public FontRenderer getFontRenderer() |
| { |
| return guiObj.getFont(); |
| } |
| |
| public void mouseClickMove(int mouseX, int mouseY, int button, long ticks) {} |
| |
| public void mouseMovedOrUp(int x, int y, int type) {} |
| |
| public abstract Rectangle4i getBounds(int guiWidth, int guiHeight); |
| |
| public abstract void renderBackground(int xAxis, int yAxis, int guiWidth, int guiHeight); |
| |
| public abstract void renderForeground(int xAxis, int yAxis); |
| |
| public abstract void preMouseClicked(int xAxis, int yAxis, int button); |
| |
| public abstract void mouseClicked(int xAxis, int yAxis, int button); |
| } |