bool CConnectManager::Connect ( const char* szHost, unsigned short usPort, const char* szNick, const char* szPassword ) { assert ( szHost ); assert ( szNick ); assert ( szPassword ); // Are we already connecting? CNet* pNet = CCore::GetSingleton ().GetNetwork (); if ( m_bIsConnecting || pNet->IsConnected () ) { CModManager::GetSingleton ().Unload (); } // Is the nick valid? if ( !CheckNickProvided ( (char*) szNick ) ) { SString strBuffer = "Connecting failed. Invalid nick provided!"; CCore::GetSingleton ().ShowMessageBox ( "Error", strBuffer, MB_BUTTON_OK | MB_ICON_ERROR ); return false; } // Save the nick too CVARS_SET ( "nick", std::string ( szNick ) ); // Reset the network pNet->Reset (); assert ( pNet->GetServerBitStreamVersion () == 0 ); // Set our packet handler pNet->RegisterPacketHandler ( CConnectManager::StaticProcessPacket, true ); // Set our MTU size to the default pNet->SetMTUSize ( m_usMTUSize ); // Try to start a network to connect if ( !pNet->StartNetwork ( szHost, usPort ) ) { SString strBuffer ( "Connecting to %s at port %u failed!", szHost, usPort ); CCore::GetSingleton ().ShowMessageBox ( "Error", strBuffer, MB_BUTTON_OK | MB_ICON_ERROR ); return false; } m_strHost = szHost; m_strNick = szNick; m_strPassword = szPassword; // Store the port and that we're connecting m_usPort = usPort; m_bIsConnecting = true; m_tConnectStarted = time ( NULL ); // Display the status box SString strBuffer ( "Connecting to %s:%u ...", m_strHost.c_str(), usPort ); CCore::GetSingleton ().ShowMessageBox ( "CONNECTING", strBuffer, MB_BUTTON_CANCEL | MB_ICON_INFO, m_pOnCancelClick ); return true; }