package advancedsystemsmanager.client.gui; import advancedsystemsmanager.flow.elements.ScrollVariable; import advancedsystemsmanager.flow.elements.Variable; import advancedsystemsmanager.helpers.CollisionHelper; import advancedsystemsmanager.network.PacketHandler; import advancedsystemsmanager.tileentities.manager.TileEntityManager; public class GuiVariable implements IInterfaceRenderer { private static final int BUTTON_WIDTH = 30; private static final int BUTTON_HEIGHT = 18; private static int X = 110; private static int Y = 64; private static int BUTTON_X = X + GuiColourSelector.OUTPUT_X; private static int BUTTON_Y = Y + 110; protected TileEntityManager manager; private GuiColourSelector colourSelector; private ScrollVariable variables; public GuiVariable(TileEntityManager te) { this.manager = te; // test = new GuiColourSelectorHex(); variables = new ScrollVariable(null, X + 200, Y, 5, 5) { @Override public TileEntityManager getManager() { return manager; } @Override public void onClick(Variable variable, int mX, int mY, int button) { super.onClick(variable, mX, mY, button); colourSelector.setRGB(variable.colour); } @Override public void sendUpdate() { } @Override public void onRelease(int mX, int mY) { if (clicked && canScroll) { moveOffset(dir * ITEM_SIZE_WITH_MARGIN); } super.onRelease(mX, mY); } }; colourSelector = new GuiColourSelector(X, Y) { @Override protected void drawColourOutput(GuiBase guiBase) { guiBase.drawSplitColouredTexture(x + OUTPUT_X, y, 30, 30, Variable.VARIABLE_SRC_X, Variable.VARIABLE_SRC_Y, Variable.VARIABLE_SIZE, Variable.VARIABLE_SIZE, colourSelector.getColour(), displaySplitColour() ? new int[]{variables.variable >> 16, variables.variable >> 8 & 0xFF, variables.variable & 0xFF} : null); } @Override public boolean displaySplitColour() { return variables.variable != -1; } }; } @Override public void draw(GuiManager gui, int mX, int mY) { // test.draw(gui, mX, mY, 1); if (manager.variableUpdate) { variables.updateSearch(); manager.variableUpdate = false; } colourSelector.draw(gui, mX, mY, 1); variables.draw(gui, mX, mY); gui.drawRectangle(BUTTON_X, BUTTON_Y, BUTTON_X + BUTTON_WIDTH, BUTTON_Y + BUTTON_HEIGHT, new int[]{0x99, 0x99, 0x99}); } @Override public void drawMouseOver(GuiManager gui, int mX, int mY) { colourSelector.drawMouseOver(gui, mX, mY); variables.drawMouseOver(gui, mX, mY); } @Override public void onClick(GuiManager gui, int mX, int mY, int button) { // test.onClick(mX, mY, button); colourSelector.onClick(mX, mY, button); variables.onClick(mX, mY, button); if (CollisionHelper.inBounds(BUTTON_X, BUTTON_Y, BUTTON_WIDTH, BUTTON_HEIGHT, mX, mY)) { int colour = colourSelector.getRGB(); if (manager.getVariable(colour) == null) { manager.addNewVariable(new Variable(colour)); variables.updateSearch(); PacketHandler.sendVariablePacket(colour); } } } @Override public void onDrag(GuiManager gui, int mX, int mY) { colourSelector.drag(mX, mY); } @Override public void onRelease(GuiManager gui, int mX, int mY, int button) { colourSelector.release(mX, mY); variables.onRelease(mX, mY); } @Override public boolean onKeyTyped(GuiManager gui, char c, int k) { return colourSelector.onKeyStroke(gui, c, k) || variables.onKeyStroke(gui, c, k); } @Override public void onScroll(int scroll) { colourSelector.onScroll(scroll); variables.doScroll(scroll); } }