    001package net.minecraft.client.multiplayer;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.client.Minecraft;
    006import net.minecraft.client.gui.GuiButton;
    007import net.minecraft.client.gui.GuiMainMenu;
    008import net.minecraft.client.gui.GuiScreen;
    009import net.minecraft.util.StringTranslate;
    010
    011@SideOnly(Side.CLIENT)
    012public class GuiConnecting extends GuiScreen
    013{
    014    /** A reference to the NetClientHandler. */
    015    private NetClientHandler clientHandler;
    016
    017    /** True if the connection attempt has been cancelled. */
    018    private boolean cancelled = false;
    019
    020    public GuiConnecting(Minecraft par1Minecraft, ServerData par2ServerData)
    021    {
    022        this.mc = par1Minecraft;
    023        ServerAddress var3 = ServerAddress.func_78860_a(par2ServerData.serverIP);
    024        par1Minecraft.loadWorld((WorldClient)null);
    025        par1Minecraft.setServerData(par2ServerData);
    026        this.spawnNewServerThread(var3.getIP(), var3.getPort());
    027    }
    028
    029    public GuiConnecting(Minecraft par1Minecraft, String par2Str, int par3)
    030    {
    031        this.mc = par1Minecraft;
    032        par1Minecraft.loadWorld((WorldClient)null);
    033        this.spawnNewServerThread(par2Str, par3);
    034    }
    035
    036    private void spawnNewServerThread(String par1Str, int par2)
    037    {
    038        System.out.println("Connecting to " + par1Str + ", " + par2);
    039        (new ThreadConnectToServer(this, par1Str, par2)).start();
    040    }
    041
    042    /**
    043     * Called from the main game loop to update the screen.
    044     */
    045    public void updateScreen()
    046    {
    047        if (this.clientHandler != null)
    048        {
    049            this.clientHandler.processReadPackets();
    050        }
    051    }
    052
    053    /**
    054     * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
    055     */
    056    protected void keyTyped(char par1, int par2) {}
    057
    058    /**
    059     * Adds the buttons (and other controls) to the screen in question.
    060     */
    061    public void initGui()
    062    {
    063        StringTranslate var1 = StringTranslate.getInstance();
    064        this.controlList.clear();
    065        this.controlList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 120 + 12, var1.translateKey("gui.cancel")));
    066    }
    067
    068    /**
    069     * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
    070     */
    071    protected void actionPerformed(GuiButton par1GuiButton)
    072    {
    073        if (par1GuiButton.id == 0)
    074        {
    075            this.cancelled = true;
    076
    077            if (this.clientHandler != null)
    078            {
    079                this.clientHandler.disconnect();
    080            }
    081
    082            this.mc.displayGuiScreen(new GuiMainMenu());
    083        }
    084    }
    085
    086    /**
    087     * Draws the screen and all the components in it.
    088     */
    089    public void drawScreen(int par1, int par2, float par3)
    090    {
    091        this.drawDefaultBackground();
    092        StringTranslate var4 = StringTranslate.getInstance();
    093
    094        if (this.clientHandler == null)
    095        {
    096            this.drawCenteredString(this.fontRenderer, var4.translateKey("connect.connecting"), this.width / 2, this.height / 2 - 50, 16777215);
    097            this.drawCenteredString(this.fontRenderer, "", this.width / 2, this.height / 2 - 10, 16777215);
    098        }
    099        else
    100        {
    101            this.drawCenteredString(this.fontRenderer, var4.translateKey("connect.authorizing"), this.width / 2, this.height / 2 - 50, 16777215);
    102            this.drawCenteredString(this.fontRenderer, this.clientHandler.field_72560_a, this.width / 2, this.height / 2 - 10, 16777215);
    103        }
    104
    105        super.drawScreen(par1, par2, par3);
    106    }
    107
    108    /**
    109     * Sets the NetClientHandler.
    110     */
    111    static NetClientHandler setNetClientHandler(GuiConnecting par0GuiConnecting, NetClientHandler par1NetClientHandler)
    112    {
    113        return par0GuiConnecting.clientHandler = par1NetClientHandler;
    114    }
    115
    116    static Minecraft func_74256_a(GuiConnecting par0GuiConnecting)
    117    {
    118        return par0GuiConnecting.mc;
    119    }
    120
    121    static boolean isCancelled(GuiConnecting par0GuiConnecting)
    122    {
    123        return par0GuiConnecting.cancelled;
    124    }
    125
    126    static Minecraft func_74254_c(GuiConnecting par0GuiConnecting)
    127    {
    128        return par0GuiConnecting.mc;
    129    }
    130
    131    /**
    132     * Gets the NetClientHandler.
    133     */
    134    static NetClientHandler getNetClientHandler(GuiConnecting par0GuiConnecting)
    135    {
    136        return par0GuiConnecting.clientHandler;
    137    }
    138
    139    static Minecraft func_74249_e(GuiConnecting par0GuiConnecting)
    140    {
    141        return par0GuiConnecting.mc;
    142    }
    143
    144    static Minecraft func_74250_f(GuiConnecting par0GuiConnecting)
    145    {
    146        return par0GuiConnecting.mc;
    147    }
    148
    149    static Minecraft func_74251_g(GuiConnecting par0GuiConnecting)
    150    {
    151        return par0GuiConnecting.mc;
    152    }
    153
    154    public static void forceTermination(GuiConnecting gui)
    155    {
    156        gui.cancelled = true;
    157        gui.clientHandler = null;
    158    }
    159}