package mods.eln.gui; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import java.util.ArrayList; public class GuiVerticalWorkingZoneBar extends Gui implements IGuiObject { public int width, height, xPosition, yPosition; private GuiHelper helper; boolean enabled; float min, max; float value; public GuiVerticalWorkingZoneBar(int xPosition, int yPosition, int width, int height, GuiHelper helper) { this.width = width; this.height = height; this.xPosition = xPosition; this.yPosition = yPosition; this.helper = helper; enabled = true; } @Override public int getYMax() { return yPosition + height; } public void setEnabled(boolean b) { this.enabled = b; } public void setValue(float value) { this.value = value; } public void setMinMax(float min, float max) { this.min = min; this.max = max; } class Zone { public Zone(float height, int color) { this.color = color; this.height = height; } public int color; public float height; } ArrayList<Zone> zoneList = new ArrayList<GuiVerticalWorkingZoneBar.Zone>(); public void addZone(float height, int color) { zoneList.add(new Zone(height, color)); } @Override public void idraw(int x, int y, float f) { //if(enabled == false) //GL11.glColor3f(0.7f, 0.7f, 0.7f); drawRect(xPosition, yPosition - 2, xPosition + width, yPosition + height + 2, 0xFF404040); drawRect(xPosition + 1, yPosition - 1, xPosition + width - 1, yPosition + height + 1, 0xFF606060); drawRect(xPosition + 2, yPosition, xPosition + width - 2, yPosition + height, 0xFF808080); float factorY = 0f; if (enabled) for (Zone zone : zoneList) { int c = zone.color; /*if(enabled == false) c = (c & 0xFF000000) + (((int)((c & 0xFF0000) * 0.7f)) & (0xFF0000)) + (((int)((c & 0xFF00) * 0.7f)) & (0xFF00)) + (((int)((c & 0xFF) * 0.7f)) & (0xFF));*/ drawRect(xPosition + 2, getYFromFactor(factorY + zone.height), xPosition + width - 2, getYFromFactor(factorY), c); factorY += zone.height; } if (enabled) drawBare(f, x, y); //else GL11.glColor3f(1f, 1f, 1f); } public void drawBare(float par1, int x, int y) { int cursorPos = getYFromFactor(value); drawRect(xPosition - 2, cursorPos - 2, xPosition + width + 2, cursorPos + 2, 0xFF202020); drawRect(xPosition - 1, cursorPos - 1, xPosition + width + 1, cursorPos + 1, 0xFF606060); } int getYFromFactor(float factorY) { return (int) (-(factorY - min) / (max - min) * height) + yPosition + height; } @Override public boolean ikeyTyped(char key, int code) { return false; } @Override public void imouseClicked(int x, int y, int code) { } @Override public void imouseMove(int x, int y) { } @Override public void imouseMovedOrUp(int x, int y, int witch) { } @Override public void translate(int x, int y) { this.xPosition += x; this.yPosition += y; } ArrayList<String> comment = new ArrayList<String>(); public void setComment(String[] comment) { this.comment.clear(); for (String str : comment) { this.comment.add(str); } } public void setComment(int line, String comment) { if (this.comment.size() < line + 1) { for (int idx = this.comment.size(); idx <= line; idx++) { this.comment.add(""); } } this.comment.set(line, comment); } @Override public void idraw2(int x, int y) { if (/*visible == true && */(x >= xPosition && y >= yPosition && x < xPosition + width && y < yPosition + height)) { int px, py; px = xPosition - helper.getHoveringTextWidth(comment, Minecraft.getMinecraft().fontRenderer) / 2; py = yPosition + height + 20/* - helper.getHoveringTextHeight(comment,Minecraft.getMinecraft().fontRenderer)*/; helper.drawHoveringText(comment, px, py, Minecraft.getMinecraft().fontRenderer); } } }