diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ProgressBarComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ProgressBarComponent.java index 5b16e524a7..34c3fb1079 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ProgressBarComponent.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ProgressBarComponent.java @@ -24,7 +24,6 @@ */ package net.runelite.client.ui.overlay.components; -import com.google.common.base.Strings; import java.awt.Color; import java.awt.Dimension; import java.awt.FontMetrics; @@ -36,9 +35,18 @@ import lombok.Setter; @Setter public class ProgressBarComponent implements LayoutableRenderableEntity { - private String text; - private double progress; - private Point position = new Point(); + public enum LabelDisplayMode + { + PERCENTAGE, + FULL + } + + private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("0.0"); + private static final DecimalFormat DECIMAL_FORMAT2 = new DecimalFormat("#0"); + private long minimum; + private long maximum = 100; + private double value; + private LabelDisplayMode labelDisplayMode = LabelDisplayMode.PERCENTAGE; private Color foregroundColor = new Color(82, 161, 82); private Color backgroundColor = new Color(255, 255, 255, 127); private Color fontColor = Color.WHITE; @@ -47,29 +55,30 @@ public class ProgressBarComponent implements LayoutableRenderableEntity @Override public Dimension render(Graphics2D graphics) { - FontMetrics metrics = graphics.getFontMetrics(); + final FontMetrics metrics = graphics.getFontMetrics(); - int barX = position.x; - int barY = position.y - metrics.getHeight(); - String textToWrite; + final int barX = 0; + final int barY = -metrics.getHeight(); - if (Strings.isNullOrEmpty(text)) + final long span = maximum - minimum; + final double currentValue = value - minimum; + final double pc = currentValue / span; + final String textToWrite; + + switch (labelDisplayMode) { - DecimalFormat df = new DecimalFormat("#0"); - textToWrite = df.format(Math.floor(progress)) + "%"; - } - else - { - textToWrite = text; + case PERCENTAGE: + textToWrite = DECIMAL_FORMAT.format(Math.floor(pc)) + "%"; + break; + default: + textToWrite = DECIMAL_FORMAT2.format(Math.floor(currentValue)) + "/" + maximum; } - int width = preferredSize.width; - int height = Math.max(preferredSize.height, 16); - - int progressTextX = barX + (width - metrics.stringWidth(textToWrite)) / 2; - int progressTextY = barY + ((height - metrics.getHeight()) / 2) + metrics.getAscent(); - - int progressFill = (int) ((width / 100F) * progress); + final int width = preferredSize.width; + final int height = Math.max(preferredSize.height, 16); + final int progressTextX = barX + (width - metrics.stringWidth(textToWrite)) / 2; + final int progressTextY = barY + ((height - metrics.getHeight()) / 2) + metrics.getHeight(); + final int progressFill = (int) (width * pc); //Draw bar graphics.setColor(backgroundColor); @@ -77,7 +86,7 @@ public class ProgressBarComponent implements LayoutableRenderableEntity graphics.setColor(foregroundColor); graphics.fillRect(barX, barY, progressFill, height); - TextComponent textComponent = new TextComponent(); + final TextComponent textComponent = new TextComponent(); textComponent.setPosition(new Point(progressTextX, progressTextY)); textComponent.setColor(fontColor); textComponent.setText(textToWrite);