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 }