Files
ReplayModCinematic/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiProgressBar.java
CrushedPixel 8c81dd414e Added new Gui with Progress Bar when editing a Replay using the ReplayEditor | https://trello.com/c/uGFDgv6E/
Added ProgressUpdateListener interface for the use with ProgressBars
2015-07-02 23:08:09 +02:00

103 lines
3.3 KiB
Java

package eu.crushedpixel.replaymod.gui.elements;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import java.awt.*;
public class GuiProgressBar extends Gui {
private static final int BORDER_WIDTH = 2;
private final Minecraft mc = Minecraft.getMinecraft();
private int xPosition, yPosition, width, height;
private float progress = 0;
private String progressString = null;
public GuiProgressBar() {
this(0, 0, 0, 0);
}
public GuiProgressBar(int xPosition, int yPosition, int width, int height) {
this(xPosition, yPosition, width, height, 0);
}
public GuiProgressBar(int xPosition, int yPosition, int width, int height, float initialProgress) {
this.xPosition = xPosition;
this.yPosition = yPosition;
this.width = width;
this.height = height;
this.progress = initialProgress;
}
/**
* Sets the progress amount of this GuiProgressBar.
* @param progress A value between 0 and 1
*/
public void setProgress(float progress) {
this.progress = progress;
}
public float getProgress() {
return progress;
}
/**
* Sets position and size of this GuiProgressBar.
*/
public void setBounds(int xPosition, int yPosition, int width, int height) {
this.xPosition = xPosition;
this.yPosition = yPosition;
this.width = width;
this.height = height;
}
/**
* Replaces the default progress String that is being displayed (x%) with a custom String.
* This has to be called whenever the progress itself changes.
* Setting <code>progressString</code> to <code>null</code> uses the default progress String.
* @param progressString The String to display
*/
public void setProgressString(String progressString) {
this.progressString = progressString;
}
public void drawProgressBar() {
int progressWidth = Math.round((width - (2*BORDER_WIDTH)) * progress);
String progressString;
if(this.progressString == null) {
progressString = (int) Math.floor(progress * 100) + "%";
} else {
progressString = this.progressString;
}
// Draws black outline
drawRect(xPosition, yPosition, xPosition + width, yPosition + height, Color.BLACK.getRGB());
// Draws white background
drawRect(xPosition + BORDER_WIDTH, yPosition + BORDER_WIDTH,
xPosition + width - BORDER_WIDTH, yPosition + height - BORDER_WIDTH, Color.WHITE.getRGB());
// Draws red progress
drawRect(xPosition + BORDER_WIDTH, yPosition + BORDER_WIDTH,
xPosition + BORDER_WIDTH + progressWidth, yPosition + height - BORDER_WIDTH, Color.GRAY.getRGB());
int xMiddle = xPosition + (width/2);
int yMiddle = yPosition + (height/2);
int progressStringWidth = mc.fontRendererObj.getStringWidth(progressString);
int progressStringHeight = mc.fontRendererObj.FONT_HEIGHT-3;
int progressStringXPosition = xMiddle - (progressStringWidth/2);
int progressStringYPosition = yMiddle - (progressStringHeight/2);
mc.fontRendererObj.drawString(progressString, progressStringXPosition, progressStringYPosition, Color.BLACK.getRGB());
}
}