    001package net.minecraft.client.gui;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.util.IProgressUpdate;
    006
    007@SideOnly(Side.CLIENT)
    008public 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}