Advertisement
Olivki

frame

Mar 7th, 2014
549
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.72 KB | None | 0 0
  1. package se.proxus.frames.list.components;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.List;
  5. import java.util.logging.Level;
  6.  
  7. import net.minecraft.client.Minecraft;
  8. import net.minecraft.src.Gui;
  9.  
  10. import org.lwjgl.input.Mouse;
  11. import org.lwjgl.opengl.GL11;
  12.  
  13. import se.proxus.Gallium;
  14. import se.proxus.frames.Component;
  15. import se.proxus.frames.DraggableComponent;
  16. import se.proxus.frames.FrameHandler;
  17. import se.proxus.mods.Mod;
  18. import se.proxus.tools.Colours;
  19. import se.proxus.tools.FontFactory;
  20. import se.proxus.tools.Tools;
  21.  
  22. public class Frame extends Gui implements Component, DraggableComponent {
  23.  
  24.     private String text;
  25.     private int x;
  26.     private int y;
  27.     private int width;
  28.     private int height;
  29.     private int dragX;
  30.     private int dragY;
  31.     private int ticksHovered;
  32.     private int componentsSize;
  33.     private boolean state;
  34.     private boolean pinned;
  35.     private boolean dragging;
  36.     private Button pin;
  37.     private Gallium client;
  38.     private final List<Component> LOADED_COMPONENTS = new LinkedList<Component>();
  39.     private int scroll;
  40.  
  41.     public Frame(final String text, final int x, final int y, final int width,
  42.         final int height, final Gallium client) {
  43.     setClient(client);
  44.     setText(text);
  45.     setX(x);
  46.     setY(y);
  47.     setWidth(width);
  48.     setHeight(height);
  49.     getLoadedComponents().clear();
  50.     setPin(new Button("", getX() + getWidth() - 10, getY() + 2, 10, 10) {
  51.         @Override
  52.         public void mouseClicked(final int x, final int y, final int type) {
  53.         if (isHovering(x, y) && type == 0) {
  54.             Minecraft.getMinecraft().sndManager.playSoundFX(
  55.                 "random.click", 1.0F, 1.0F);
  56.             setPinned(!getState());
  57.             setState(isPinned());
  58.         }
  59.         }
  60.     });
  61.     init();
  62.     }
  63.  
  64.     public Frame(final String text, final int x, final int y,
  65.         final Gallium client) {
  66.     this(text, x, y, 120, 14, client);
  67.     }
  68.  
  69.     public void init() {
  70.     for (Mod mod : getClient().getMods().getLoadedMods())
  71.         if (mod.getCategory().getName().equalsIgnoreCase(getText()))
  72.         addComponent(new Toggle(-999, -999, getWidth() - 6, 12, mod));
  73.     }
  74.  
  75.     public void handleMouseInput() {
  76.  
  77.     }
  78.  
  79.     @Override
  80.     public void draw(final FontFactory font, final int x, final int y,
  81.         final float ticks) {
  82.     mouseDragged(x, y);
  83.     if (isHovering(x, y))
  84.         setTicksHovered(getTicksHovered() + 1);
  85.     if (!isHovering(x, y) || getState())
  86.         setTicksHovered(0);
  87.     /*
  88.      * drawBorderedRect(getX(), getY(), getX() + getWidth(), getY() +
  89.      * getHeight() + getComponentsSize(), 0xFF262626, 0xFF2B2B2B);
  90.      */
  91.     drawBorderedRect(getX(), getY(), getX() + getWidth(), getY()
  92.         + getHeight() + getComponentsSize()
  93.         + (getLoadedComponents().size() > 5 && getState() ? 0.5F : 0),
  94.         0xFF111111, 0xFF313131);
  95.     drawBorderedRect(getX(), getY(), getX() + getWidth(), getY()
  96.         + getHeight() + (getState() ? 1 : 0), 0xFF111111, 0xFF2A2A2A);
  97.     if (getState()) {
  98.         /*
  99.          * drawBorderedRect(getX() + 0.5F, getY() + getHeight() - 0.5F,
  100.          * getX() + getWidth() - 0.5F, getY() + getHeight() +
  101.          * getComponentsSize() - 0.5F, 0xFF262626, 0xFF313132);
  102.          * drawBorderedRect(getX() + 0.5F, getY() + getHeight(), getX() +
  103.          * getWidth() - 0.5F, getY() + getHeight() + getComponentsSize() -
  104.          * 0.5F, 0xFF262626, 0xFF313132); drawRect(getX() + 1, getY() +
  105.          * getHeight() + 0.5F, getX() + getWidth() - 1, getY() + getHeight()
  106.          * + 1.0F, 0xFF373737);
  107.          */
  108.         drawRect(getX(), getY() + getHeight(), getX() + getWidth(), getY()
  109.             + getHeight() + 0.5F, 0xFF1F1F1F);
  110.         drawRect(getX(), getY() + getHeight() + 0.5F, getX() + getWidth(),
  111.             getY() + getHeight() + 1.0F, 0xFF363636);
  112.     }
  113.     /*
  114.      * drawBorderedGradientRect( getX() + getWidth() / 2 -
  115.      * font.getStringWidth(getText(), 1) / 2 - 2, getY() + getHeight() / 4 -
  116.      * 1, getX() + getWidth() / 2 - font.getStringWidth(getText(), 1) / 2 +
  117.      * font.getStringWidth(getText(), 1) + 2, getY() + getHeight() / 4 + 9,
  118.      * 0xFF111111, 0xFF262626, 0xFF222222);
  119.      */
  120.     font.drawString(
  121.         getText(),
  122.         getX() + getWidth() / 2 - font.getStringWidth(getText(), 1) / 2,
  123.         getY() + getHeight() / 4 + (getState() ? 0.5F : 0), 0xFFFFFFFF,
  124.         1);
  125.     if (getClient().getMinecraft().currentScreen instanceof FrameHandler) {
  126.         getPin().setX(getX() + getWidth() - 13);
  127.         getPin().setY(getY() + 2);
  128.         getPin().draw(font, x, y, ticks);
  129.     }
  130.     if (getPin().isHovering(x, y)) {
  131.         String pinned = getPin().getState() ? "Unpin" : "Pin";
  132.         drawRect(x + 6, y + 1, x + 6 + font.getStringWidth(pinned, 1) + 2,
  133.             y + 9, 0x60000000);
  134.         font.drawString(pinned, x + 7, y + 1, 0xFFFFFFFF, 1);
  135.     }
  136.     if (Tools.ticksToSeconds(getTicksHovered()) >= 5.0F && !getState()) {
  137.         String help = "Press your " + Colours.GOLD + "Right Mouse Button"
  138.             + Colours.RESET + " to <open|close> <up> the frame.";
  139.         drawRect(x + 6, y + 1, x + 6 + font.getStringWidth(help, 1) + 2,
  140.             y + 9, 0x60000000);
  141.         font.drawString(help, x + 7, y + 1, 0xFFFFFFFF, 1);
  142.     }
  143.     if (getState()) {
  144.         setComponentsSize(getLoadedComponents().size() * 14 + 4);
  145.         GL11.glPushMatrix();
  146.         startCut(getX(), getY() + getHeight(), getX() + getWidth(), getY()
  147.             + getHeight() + getComponentsSize());
  148.         for (int var0 = 0; var0 < getLoadedComponents().size(); var0++) {
  149.         Component component = getLoadedComponents().get(var0);
  150.         component.setX(getX() + 3);
  151.         component.setY(getY() + getHeight() + 3 + var0 * 14 - scroll);
  152.         component.draw(font, x, y, ticks);
  153.         }
  154.         stopCut();
  155.         GL11.glPopMatrix();
  156.         /*
  157.          * for (Component component : getLoadedComponents()) if (component
  158.          * instanceof Toggle) if (component.isHovering(x, y)) { Toggle
  159.          * toggle = (Toggle) component; String hidden =
  160.          * toggle.getMod().isHidden() ? "Hidden" : "Shown"; drawRect(x + 4,
  161.          * y + 2, x + 4 + font.getStringWidth(hidden, 1) + 2, y + 10,
  162.          * 0x60000000); font.drawString(hidden, x + 5, y + 2, 0xFFFFFFFF,
  163.          * 1); }
  164.          */
  165.     } else
  166.         setComponentsSize(0);
  167.     }
  168.  
  169.     @Override
  170.     public void mouseDragged(final int x, final int y) {
  171.     if (Mouse.isButtonDown(0) && isDragging()) {
  172.         setX(x - getDragX());
  173.         setY(y - getDragY());
  174.     } else
  175.         setDragging(false);
  176.     if (getX() <= 0)
  177.         setX(0);
  178.     if (getY() <= 0)
  179.         setY(0);
  180.     if (getY() >= Minecraft.dp.getResolution().getScaledHeight()
  181.         - getHeight()
  182.         && !getState())
  183.         setY(Minecraft.dp.getResolution().getScaledHeight() - getHeight());
  184.     if (getY() >= Minecraft.dp.getResolution().getScaledHeight()
  185.         - getHeight() - getComponentsSize()
  186.         && getState())
  187.         setY(Minecraft.dp.getResolution().getScaledHeight() - getHeight()
  188.             - getComponentsSize());
  189.     if (getX() >= Minecraft.dp.getResolution().getScaledWidth()
  190.         - getWidth())
  191.         setX(Minecraft.dp.getResolution().getScaledWidth() - getWidth());
  192.     }
  193.  
  194.     @Override
  195.     public void mouseClicked(final int x, final int y, final int type) {
  196.     if (isHovering(x, y) && type == 0 && !isObstructed(x, y)) {
  197.         Minecraft.getMinecraft().sndManager.playSoundFX("random.click",
  198.             1.0F, 1.0F);
  199.         setDragX(x - getX());
  200.         setDragY(y - getY());
  201.         setDragging(true);
  202.         getClient().getFrames().setCurrentFrame(this, true);
  203.     }
  204.     if (isHovering(x, y) && type == 1 && !isObstructed(x, y)) {
  205.         Minecraft.getMinecraft().sndManager.playSoundFX("random.click",
  206.             1.0F, 1.0F);
  207.         setState(!getState());
  208.         getClient().getFrames().setCurrentFrame(this, true);
  209.     }
  210.     getPin().mouseClicked(x, y, type);
  211.     if (getState())
  212.         for (Component component : getLoadedComponents())
  213.         component.mouseClicked(x, y, type);
  214.     }
  215.  
  216.     @Override
  217.     public void keyTyped(final String keyName, final char keyChar) {
  218.     for (Component component : getLoadedComponents())
  219.         component.keyTyped(keyName, keyChar);
  220.     }
  221.  
  222.     @Override
  223.     public void setText(final String text) {
  224.     this.text = text;
  225.     }
  226.  
  227.     @Override
  228.     public String getText() {
  229.     return text;
  230.     }
  231.  
  232.     @Override
  233.     public void setX(final int x) {
  234.     this.x = x;
  235.     }
  236.  
  237.     @Override
  238.     public int getX() {
  239.     return x;
  240.     }
  241.  
  242.     @Override
  243.     public void setY(final int y) {
  244.     this.y = y;
  245.     }
  246.  
  247.     @Override
  248.     public int getY() {
  249.     return y;
  250.     }
  251.  
  252.     @Override
  253.     public void setWidth(final int width) {
  254.     this.width = width;
  255.     }
  256.  
  257.     @Override
  258.     public int getWidth() {
  259.     return width;
  260.     }
  261.  
  262.     @Override
  263.     public void setHeight(final int height) {
  264.     this.height = height;
  265.     }
  266.  
  267.     @Override
  268.     public int getHeight() {
  269.     return height;
  270.     }
  271.  
  272.     @Override
  273.     public void setDragX(final int x) {
  274.     this.dragX = x;
  275.     }
  276.  
  277.     @Override
  278.     public int getDragX() {
  279.     return dragX;
  280.     }
  281.  
  282.     @Override
  283.     public void setDragY(final int y) {
  284.     this.dragY = y;
  285.     }
  286.  
  287.     public int getComponentsSize() {
  288.     return componentsSize;
  289.     }
  290.  
  291.     public void setComponentsSize(final int componentsSize) {
  292.     this.componentsSize = componentsSize;
  293.     }
  294.  
  295.     @Override
  296.     public int getDragY() {
  297.     return dragY;
  298.     }
  299.  
  300.     public int getTicksHovered() {
  301.     return ticksHovered;
  302.     }
  303.  
  304.     public void setTicksHovered(final int ticksHovered) {
  305.     this.ticksHovered = ticksHovered;
  306.     }
  307.  
  308.     @Override
  309.     public void setDragging(final boolean dragging) {
  310.     this.dragging = dragging;
  311.     }
  312.  
  313.     @Override
  314.     public boolean isDragging() {
  315.     return dragging;
  316.     }
  317.  
  318.     @Override
  319.     public void setState(final boolean state) {
  320.     this.state = state;
  321.     }
  322.  
  323.     @Override
  324.     public boolean getState() {
  325.     return state;
  326.     }
  327.  
  328.     public boolean isPinned() {
  329.     return pinned;
  330.     }
  331.  
  332.     public void setPinned(final boolean pinned) {
  333.     this.pinned = pinned;
  334.     }
  335.  
  336.     public Button getPin() {
  337.     return pin;
  338.     }
  339.  
  340.     public void setPin(final Button pin) {
  341.     this.pin = pin;
  342.     }
  343.  
  344.     public Gallium getClient() {
  345.     return client;
  346.     }
  347.  
  348.     public void setClient(final Gallium client) {
  349.     this.client = client;
  350.     }
  351.  
  352.     public Component addComponent(final Component component) {
  353.     if (!getLoadedComponents().contains(component)) {
  354.         getLoadedComponents().add(component);
  355.         getClient().getLogger().log(
  356.             Level.INFO,
  357.             "Added the component '" + component.getText()
  358.                 + "' to the frame '" + getText() + "'");
  359.     }
  360.     return component;
  361.     }
  362.  
  363.     public List<Component> getLoadedComponents() {
  364.     return LOADED_COMPONENTS;
  365.     }
  366.  
  367.     @Override
  368.     public boolean isHovering(final int x, final int y) {
  369.     return x >= getX() && y >= getY() && x <= getX() + getWidth() - 14
  370.         && y <= getY() + getHeight();
  371.     }
  372.  
  373.     /**
  374.      * @author WTG
  375.      * @param x
  376.      *            The X coordinate for the mouse.
  377.      * @param y
  378.      *            The Y coordinate for the mouse.
  379.      * @return If the Frame is obstructed.
  380.      */
  381.     public boolean isObstructed(final int x, final int y) {
  382.     for (Frame frame : getClient().getFrames().getLoadedFrames()) {
  383.         if (frame == this)
  384.         continue;
  385.  
  386.         if (!frame.getState()) {
  387.         if (x >= frame.getX() && x <= frame.getX() + frame.getWidth()
  388.             && y >= frame.getY() && y <= frame.getY() + 14
  389.             && getIndex(frame.getText()) > getIndex(getText()))
  390.             return true;
  391.         } else if (x >= frame.getX()
  392.             && x <= frame.getX() + frame.getWidth()
  393.             && y >= frame.getY()
  394.             && y <= frame.getY() + frame.getHeight()
  395.             && getIndex(frame.getText()) > getIndex(getText()))
  396.         return true;
  397.     }
  398.  
  399.     return false;
  400.     }
  401.  
  402.     /**
  403.      * @author WTG
  404.      * @param name
  405.      *            The name of the Frame
  406.      * @return the index of the Frame.
  407.      */
  408.     public int getIndex(final String name) {
  409.     for (int index = 0; index < getClient().getFrames().getLoadedFrames()
  410.         .size(); index++) {
  411.         Frame frame = getClient().getFrames().getLoadedFrames().get(index);
  412.  
  413.         if (name.equalsIgnoreCase(frame.getText()))
  414.         return index;
  415.     }
  416.     return -1;
  417.     }
  418.  
  419.     public void drawBaseBorderedRect(final float x, final float y,
  420.         final float width, final float height, final int hex1,
  421.         final int hex2) {
  422.     drawRect(x, y + 1, width, height - 1, hex2);
  423.     drawVerticalLine(x - 1, y, height - 1, hex1);
  424.     drawVerticalLine(width, y, height - 1, hex1);
  425.     drawHorizontalLine(x, width - 1, y, hex1);
  426.     drawHorizontalLine(x, width - 1, height - 1, hex1);
  427.     }
  428.  
  429.     public void drawBorderedRect(final float x, final float y,
  430.         final float width, final float height, final int hex1,
  431.         final int hex2) {
  432.     GL11.glPushMatrix();
  433.     GL11.glScaled(0.5D, 0.5D, 0.5D);
  434.     drawBaseBorderedRect(x * 2, y * 2, width * 2, height * 2, hex1, hex2);
  435.     GL11.glPopMatrix();
  436.     }
  437.  
  438.     public void drawBaseBorderedGradientRect(final float x, final float y,
  439.         final float width, final float height, final int hex1,
  440.         final int hex2, final int hex3) {
  441.     drawGradientRect(x, y + 1, width, height - 1, hex2, hex3);
  442.     drawVerticalLine(x - 1, y, height - 1, hex1);
  443.     drawVerticalLine(width, y, height - 1, hex1);
  444.     drawHorizontalLine(x, width - 1, y, hex1);
  445.     drawHorizontalLine(x, width - 1, height - 1, hex1);
  446.     }
  447.  
  448.     public void drawBorderedGradientRect(final float x, final float y,
  449.         final float width, final float height, final int hex1,
  450.         final int hex2, final int hex3) {
  451.     GL11.glPushMatrix();
  452.     GL11.glScaled(0.5D, 0.5D, 0.5D);
  453.     drawBaseBorderedGradientRect(x * 2, y * 2, width * 2, height * 2, hex1,
  454.         hex2, hex3);
  455.     GL11.glPopMatrix();
  456.     }
  457.  
  458.     public void startCut(final int x, final int y, final int width,
  459.         final int height) {
  460.     GL11.glScissor(x * getClient().getResolution().getScaleFactor(),
  461.         (getClient().getResolution().getScaledHeight() - height)
  462.             * getClient().getResolution().getScaleFactor(),
  463.         (width - x) * getClient().getResolution().getScaleFactor(),
  464.         (height - y) * getClient().getResolution().getScaleFactor());
  465.     GL11.glEnable(GL11.GL_SCISSOR_TEST);
  466.     }
  467.  
  468.     public void stopCut() {
  469.     GL11.glDisable(GL11.GL_SCISSOR_TEST);
  470.     }
  471. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement