diff --git a/source/glest_game/graphics/renderer.cpp b/source/glest_game/graphics/renderer.cpp index d2f04ee5..416936d3 100644 --- a/source/glest_game/graphics/renderer.cpp +++ b/source/glest_game/graphics/renderer.cpp @@ -1706,7 +1706,7 @@ void Renderer::renderSurface(const int renderFps) { if(shadowsOffDueToMinRender == false) { //shadow texture - if(shadows==sProjected || shadows==sShadowMapping){ + if(shadows == sProjected || shadows == sShadowMapping) { glActiveTexture(shadowTexUnit); glEnable(GL_TEXTURE_2D); diff --git a/source/glest_game/menu/menu_state_connected_game.cpp b/source/glest_game/menu/menu_state_connected_game.cpp index 43e763a2..306a2f15 100644 --- a/source/glest_game/menu/menu_state_connected_game.cpp +++ b/source/glest_game/menu/menu_state_connected_game.cpp @@ -389,7 +389,8 @@ MenuStateConnectedGame::MenuStateConnectedGame(Program *program, MainMenu *mainM if(config.getBool("EnableFTPXfer","true") == true) { ClientInterface *clientInterface = networkManager.getClientInterface(); string serverUrl = clientInterface->getServerIpAddress(); - int portNumber = config.getInt("FTPServerPort",intToStr(ServerSocket::getFTPServerPort()).c_str()); + //int portNumber = config.getInt("FTPServerPort",intToStr(ServerSocket::getFTPServerPort()).c_str()); + int portNumber = clientInterface->getServerFTPPort(); vector mapPathList = config.getPathListForType(ptMaps); std::pair mapsPath; diff --git a/source/glest_game/menu/menu_state_join_game.cpp b/source/glest_game/menu/menu_state_join_game.cpp index acfcffd4..f923cde0 100644 --- a/source/glest_game/menu/menu_state_join_game.cpp +++ b/source/glest_game/menu/menu_state_join_game.cpp @@ -550,10 +550,21 @@ void MenuStateJoinGame::connectToServer() { config.setString("ServerIp", serverIp.getString()); config.save(); - abortAutoFind = true; - clientInterface->stopServerDiscovery(); - mainMenu->setState(new MenuStateConnectedGame(program, mainMenu)); - + for(time_t elapsedWait = time(NULL); + clientInterface->getIntroDone() == false && + clientInterface->isConnected() && + difftime(time(NULL),elapsedWait) <= 3;) { + if(clientInterface->isConnected()) { + //update lobby + clientInterface->updateLobby(); + } + } + if( clientInterface->isConnected() == true && + clientInterface->getIntroDone() == true) { + abortAutoFind = true; + clientInterface->stopServerDiscovery(); + mainMenu->setState(new MenuStateConnectedGame(program, mainMenu)); + } SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] END\n",__FILE__,__FUNCTION__); } diff --git a/source/glest_game/network/client_interface.cpp b/source/glest_game/network/client_interface.cpp index b7c95bfe..283ed075 100755 --- a/source/glest_game/network/client_interface.cpp +++ b/source/glest_game/network/client_interface.cpp @@ -170,8 +170,9 @@ void ClientInterface::updateLobby() { versionString = networkMessageIntro.getVersionString(); playerIndex= networkMessageIntro.getPlayerIndex(); serverName= networkMessageIntro.getName(); + serverFTPPort = networkMessageIntro.getFtpPort(); - SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] got NetworkMessageIntro, networkMessageIntro.getGameState() = %d, versionString [%s], sessionKey = %d, playerIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,networkMessageIntro.getGameState(),versionString.c_str(),sessionKey,playerIndex); + SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] got NetworkMessageIntro, networkMessageIntro.getGameState() = %d, versionString [%s], sessionKey = %d, playerIndex = %d, serverFTPPort = %d\n",__FILE__,__FUNCTION__,__LINE__,networkMessageIntro.getGameState(),versionString.c_str(),sessionKey,playerIndex,serverFTPPort); //check consistency bool compatible = checkVersionComptability(networkMessageIntro.getVersionString(), getNetworkVersionString()); @@ -223,7 +224,7 @@ void ClientInterface::updateLobby() { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); //send intro message - NetworkMessageIntro sendNetworkMessageIntro(sessionKey,getNetworkVersionString(), getHumanPlayerName(), -1, nmgstOk, this->getSocket()->getConnectedIPAddress()); + NetworkMessageIntro sendNetworkMessageIntro(sessionKey,getNetworkVersionString(), getHumanPlayerName(), -1, nmgstOk, this->getSocket()->getConnectedIPAddress(),serverFTPPort); sendMessage(&sendNetworkMessageIntro); SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); diff --git a/source/glest_game/network/client_interface.h b/source/glest_game/network/client_interface.h index 8c2b546c..aeb873b5 100644 --- a/source/glest_game/network/client_interface.h +++ b/source/glest_game/network/client_interface.h @@ -54,6 +54,7 @@ private: time_t clientSimulationLagStartTime; string versionString; int sessionKey; + int serverFTPPort; public: ClientInterface(); @@ -104,6 +105,7 @@ public: const string &getVersionString() const {return versionString;} virtual string getHumanPlayerName(int index=-1); virtual int getHumanPlayerIndex() const {return playerIndex;} + int getServerFTPPort() const { return serverFTPPort; } protected: diff --git a/source/glest_game/network/connection_slot.cpp b/source/glest_game/network/connection_slot.cpp index 7775503b..b5120836 100644 --- a/source/glest_game/network/connection_slot.cpp +++ b/source/glest_game/network/connection_slot.cpp @@ -340,7 +340,7 @@ void ConnectionSlot::update(bool checkForNewClients,int lockedSlotIndex) { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] !!!!!!!!WARNING - no open slots, disconnecting client\n",__FILE__,__FUNCTION__,__LINE__); if(socket != NULL) { - NetworkMessageIntro networkMessageIntro(sessionKey,getNetworkVersionString(), getHostName(), playerIndex, nmgstNoSlots, 0); + NetworkMessageIntro networkMessageIntro(sessionKey,getNetworkVersionString(), getHostName(), playerIndex, nmgstNoSlots, 0, ServerSocket::getFTPServerPort()); sendMessage(&networkMessageIntro); } @@ -350,7 +350,7 @@ void ConnectionSlot::update(bool checkForNewClients,int lockedSlotIndex) { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] client will be assigned to the next open slot\n",__FILE__,__FUNCTION__,__LINE__); if(socket != NULL) { - NetworkMessageIntro networkMessageIntro(sessionKey,getNetworkVersionString(), getHostName(), playerIndex, nmgstOk, 0); + NetworkMessageIntro networkMessageIntro(sessionKey,getNetworkVersionString(), getHostName(), playerIndex, nmgstOk, 0, ServerSocket::getFTPServerPort()); sendMessage(&networkMessageIntro); } } diff --git a/source/glest_game/network/network_message.cpp b/source/glest_game/network/network_message.cpp index c58a215a..bff3ba77 100644 --- a/source/glest_game/network/network_message.cpp +++ b/source/glest_game/network/network_message.cpp @@ -120,7 +120,8 @@ NetworkMessageIntro::NetworkMessageIntro() { NetworkMessageIntro::NetworkMessageIntro(int32 sessionId,const string &versionString, const string &name, int playerIndex, NetworkGameStateType gameState, - uint32 externalIp) { + uint32 externalIp, + uint32 ftpPort) { data.messageType = nmtIntro; data.sessionId = sessionId; data.versionString = versionString; @@ -128,9 +129,10 @@ NetworkMessageIntro::NetworkMessageIntro(int32 sessionId,const string &versionSt data.playerIndex = static_cast(playerIndex); data.gameState = static_cast(gameState); data.externalIp = externalIp; + data.ftpPort = ftpPort; } -bool NetworkMessageIntro::receive(Socket* socket){ +bool NetworkMessageIntro::receive(Socket* socket) { bool result = NetworkMessage::receive(socket, &data, sizeof(data)); data.name.nullTerminate(); data.versionString.nullTerminate(); @@ -138,9 +140,9 @@ bool NetworkMessageIntro::receive(Socket* socket){ return result; } -void NetworkMessageIntro::send(Socket* socket) const{ +void NetworkMessageIntro::send(Socket* socket) const { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] sending nmtIntro, data.playerIndex = %d, data.sessionId = %d\n",__FILE__,__FUNCTION__,__LINE__,data.playerIndex,data.sessionId); - assert(data.messageType==nmtIntro); + assert(data.messageType == nmtIntro); NetworkMessage::send(socket, &data, sizeof(data)); } diff --git a/source/glest_game/network/network_message.h b/source/glest_game/network/network_message.h index 416ae62e..4f3bb6ef 100644 --- a/source/glest_game/network/network_message.h +++ b/source/glest_game/network/network_message.h @@ -92,6 +92,7 @@ private: int16 playerIndex; int8 gameState; uint32 externalIp; + uint32 ftpPort; }; private: @@ -99,7 +100,7 @@ private: public: NetworkMessageIntro(); - NetworkMessageIntro(int32 sessionId, const string &versionString, const string &name, int playerIndex, NetworkGameStateType gameState, uint32 externalIp); + NetworkMessageIntro(int32 sessionId, const string &versionString, const string &name, int playerIndex, NetworkGameStateType gameState, uint32 externalIp, uint32 ftpPort); int32 getSessionId() const { return data.sessionId;} string getVersionString() const { return data.versionString.getString(); } @@ -107,6 +108,7 @@ public: int getPlayerIndex() const { return data.playerIndex; } NetworkGameStateType getGameState() const { return static_cast(data.gameState); } uint32 getExternalIp() const { return data.externalIp;} + uint32 getFtpPort() const { return data.ftpPort; } virtual bool receive(Socket* socket); virtual void send(Socket* socket) const; diff --git a/source/shared_lib/sources/platform/posix/miniftpclient.cpp b/source/shared_lib/sources/platform/posix/miniftpclient.cpp index 9e4a4f77..fd319754 100644 --- a/source/shared_lib/sources/platform/posix/miniftpclient.cpp +++ b/source/shared_lib/sources/platform/posix/miniftpclient.cpp @@ -262,8 +262,8 @@ FTP_Client_ResultType FTPClientThread::getMapFromServer(string mapFileName, stri CURLcode res = curl_easy_perform(curl); if(CURLE_OK != res) { // we failed - printf("curl FAILED with: %d [%s]\n", res,curl_easy_strerror(res)); - SystemFlags::OutputDebug(SystemFlags::debugNetwork,"curl FAILED with: %d [%s]\n", res,curl_easy_strerror(res)); + printf("curl FAILED with: %d [%s] szBuf [%s]\n", res,curl_easy_strerror(res),szBuf); + SystemFlags::OutputDebug(SystemFlags::debugNetwork,"curl FAILED with: %d [%s] szBuf [%s]\n", res,curl_easy_strerror(res),szBuf); } else { result = ftp_crt_SUCCESS; @@ -420,8 +420,8 @@ FTP_Client_ResultType FTPClientThread::getTilesetFromServer(string tileSetName, if(CURLE_OK != res) { // we failed - printf("curl FAILED with: %d [%s] attempting to remove folder contents [%s]\n", res,curl_easy_strerror(res),destRootFolder.c_str()); - SystemFlags::OutputDebug(SystemFlags::debugNetwork,"curl FAILED with: %d [%s] attempting to remove folder contents [%s]\n", res,curl_easy_strerror(res),destRootFolder.c_str()); + printf("curl FAILED with: %d [%s] attempting to remove folder contents [%s] szBuf [%s]\n", res,curl_easy_strerror(res),destRootFolder.c_str(),szBuf); + SystemFlags::OutputDebug(SystemFlags::debugNetwork,"curl FAILED with: %d [%s] attempting to remove folder contents [%s] szBuf [%s]\n", res,curl_easy_strerror(res),destRootFolder.c_str(),szBuf); if(destRootFolder != "") { //unlink(destRootFolder.c_str());