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 }