001    package net.minecraft.client.multiplayer;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import net.minecraft.client.Minecraft;
006    import net.minecraft.client.gui.GuiButton;
007    import net.minecraft.client.gui.GuiMainMenu;
008    import net.minecraft.client.gui.GuiScreen;
009    import net.minecraft.util.StringTranslate;
010    
011    @SideOnly(Side.CLIENT)
012    public 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    }