package mcjty.rftools.blocks.screens.modulesclient;
import mcjty.lib.gui.RenderHelper;
import net.minecraft.client.gui.FontRenderer;
import java.text.DecimalFormat;
public class ClientScreenModuleHelper {
public static void renderLevel(FontRenderer fontRenderer, int xoffset, int currenty, Object[] screenData, String label, boolean hidebar, boolean hidetext, boolean showpct, boolean showdiff,
int poscolor, int negcolor,
int gradient1, int gradient2, FormatStyle formatStyle) {
if (screenData == null) {
return;
}
long maxContents = 0;
try {
maxContents = (Long) screenData[1];
} catch (Exception e) {
return;
}
if (maxContents > 0) {
if (!hidebar) {
long contents = (Long) screenData[0];
int width = 80 - xoffset + 7 + 40;
long value = contents * width / maxContents;
if (value < 0) {
value = 0;
} else if (value > width) {
value = width;
}
RenderHelper.drawHorizontalGradientRect(xoffset, currenty, (int) (xoffset + value), currenty + 8, gradient1, gradient2);
}
}
if (!hidetext) {
if (showdiff) {
long diff = (Long) screenData[2];
if (diff < 0) {
fontRenderer.drawString(diff + " " + label + "/t", xoffset, currenty, negcolor);
} else {
fontRenderer.drawString("+" + diff + " " + label + "/t", xoffset, currenty, poscolor);
}
} else if (maxContents > 0) {
long contents = (Long) screenData[0];
if (showpct) {
long value = contents * 100 / maxContents;
if (value < 0) {
value = 0;
} else if (value > 100) {
value = 100;
}
fontRenderer.drawString(value + "%", xoffset, currenty, poscolor);
} else {
fontRenderer.drawString(format(String.valueOf(contents), formatStyle) + label, xoffset, currenty, poscolor);
}
}
}
}
private static DecimalFormat dfCommas = new DecimalFormat("###,###");
public static String format(String in, FormatStyle style) {
switch (style) {
case MODE_FULL:
return in;
case MODE_COMPACT: {
long contents = Long.parseLong(in);
int unit = 1000;
if (contents < unit) {
return in;
}
int exp = (int) (Math.log(contents) / Math.log(unit));
char pre = "KMGTP".charAt(exp-1);
return String.format("%.1f %s", contents / Math.pow(unit, exp), pre);
}
case MODE_COMMAS:
return dfCommas.format(Long.parseLong(in));
}
return in;
}
}