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}