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