private void NetworkHandler_NetworkInitializingFinished(InitializeNetworkHandler handler) { try { handler.NetworkInitializingFinished -= NetworkHandler_NetworkInitializingFinished; ConnectionLobby.Status = handler.Message; if (!handler.Error) { Network = handler.Network; SessionInformation = new SessionConnectParameters(handler.ConnectParameters.ServerIP, ParentControl.NetworkDeathHandler, Network.ClientSession); ShowReconnectOptions(); if (handler.ConnectParameters.GameReconnect) { ParentControl.StatusControl.SetReconnecting(); ParentControl.SwitchMode(GameMode.Status); } else { ParentControl.OptionControl.SetServerIP(handler.ConnectParameters.ServerIP.ToString()); ParentControl.SwitchMode(GameMode.Options); } } } finally { Connecting = false; } }
protected void InitializeNetwork(bool reconnect = false) { InitializeNetworkHandler networkHandler; lock (ConnectionLobby) { if (Connecting) { return; } ConnectionLobby.Status = "Connecting..."; if (Network != null) { return; } IPAddress serverIP; if (!IPAddress.TryParse(ConnectionLobby.ServerIP, out serverIP)) { ConnectionLobby.Status = "Invalid IP!"; return; } SessionConnectParameters connectParams; if (reconnect) { connectParams = SessionInformation; } else { connectParams = new SessionConnectParameters(serverIP, ParentControl.NetworkDeathHandler); } networkHandler = new InitializeNetworkHandler(connectParams, ParentControl.Logger); networkHandler.NetworkInitializingFinished += NetworkHandler_NetworkInitializingFinished; Connecting = true; } new Thread(networkHandler.InitializeNetwork).Start(); }