001 package net.minecraft.client.gui;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.SideOnly;
005 import net.minecraft.util.IProgressUpdate;
006
007 @SideOnly(Side.CLIENT)
008 public class GuiProgress extends GuiScreen implements IProgressUpdate
009 {
010 private String progressMessage = "";
011 private String workingMessage = "";
012 private int currentProgress = 0;
013 private boolean noMoreProgress;
014
015 /**
016 * "Saving level", or the loading,or downloading equivelent
017 */
018 public void displayProgressMessage(String par1Str)
019 {
020 this.resetProgressAndMessage(par1Str);
021 }
022
023 /**
024 * this string, followed by "working..." and then the "% complete" are the 3 lines shown. This resets progress to 0,
025 * and the WorkingString to "working...".
026 */
027 public void resetProgressAndMessage(String par1Str)
028 {
029 this.progressMessage = par1Str;
030 this.resetProgresAndWorkingMessage("Working...");
031 }
032
033 /**
034 * This is called with "Working..." by resetProgressAndMessage
035 */
036 public void resetProgresAndWorkingMessage(String par1Str)
037 {
038 this.workingMessage = par1Str;
039 this.setLoadingProgress(0);
040 }
041
042 /**
043 * Updates the progress bar on the loading screen to the specified amount. Args: loadProgress
044 */
045 public void setLoadingProgress(int par1)
046 {
047 this.currentProgress = par1;
048 }
049
050 /**
051 * called when there is no more progress to be had, both on completion and failure
052 */
053 public void onNoMoreProgress()
054 {
055 this.noMoreProgress = true;
056 }
057
058 /**
059 * Draws the screen and all the components in it.
060 */
061 public void drawScreen(int par1, int par2, float par3)
062 {
063 if (this.noMoreProgress)
064 {
065 this.mc.displayGuiScreen((GuiScreen)null);
066 }
067 else
068 {
069 this.drawDefaultBackground();
070 this.drawCenteredString(this.fontRenderer, this.progressMessage, this.width / 2, 70, 16777215);
071 this.drawCenteredString(this.fontRenderer, this.workingMessage + " " + this.currentProgress + "%", this.width / 2, 90, 16777215);
072 super.drawScreen(par1, par2, par3);
073 }
074 }
075 }