diff --git a/source/glest_game/menu/menu_state_custom_game.cpp b/source/glest_game/menu/menu_state_custom_game.cpp index 1d5cd914a..55dff481d 100644 --- a/source/glest_game/menu/menu_state_custom_game.cpp +++ b/source/glest_game/menu/menu_state_custom_game.cpp @@ -897,16 +897,16 @@ void MenuStateCustomGame::update() { else { //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] C - ctNetwork\n",__FILE__,__FUNCTION__); - string port=intToStr(config.getInt("ServerPort")); - if(port!="61357"){ - port = port + " " + lang.get("NonStandardPort")+"!)"; + string port = intToStr(config.getInt("ServerPort")); + if(port != intToStr(GameConstants::serverPort)){ + port = port + " " + lang.get("NonStandardPort") + "!)"; } else { - port=port+")"; + port = port + ")"; } - port="("+port; - labelNetStatus[i].setText("--- "+port); + port = "(" + port; + labelNetStatus[i].setText("--- " + port); } //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] END - ctNetwork\n",__FILE__,__FUNCTION__); @@ -1054,6 +1054,8 @@ void MenuStateCustomGame::publishToMasterserver() publishToServerInfo["activeSlots"] = intToStr(slotCountUsed); publishToServerInfo["networkSlots"] = intToStr(slotCountHumans); publishToServerInfo["connectedClients"] = intToStr(slotCountConnectedPlayers); + string externalport = intToStr(Config::getInstance().getInt("ExternalServerPort",intToStr(Config::getInstance().getInt("ServerPort")).c_str())); + publishToServerInfo["externalconnectport"] = externalport; SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); } diff --git a/source/glest_game/menu/menu_state_masterserver.cpp b/source/glest_game/menu/menu_state_masterserver.cpp index 388d03b85..f7719c754 100644 --- a/source/glest_game/menu/menu_state_masterserver.cpp +++ b/source/glest_game/menu/menu_state_masterserver.cpp @@ -83,6 +83,10 @@ ServerLine::ServerLine( MasterServerInfo *mServerInfo, int lineIndex) activeSlotsLabel.init(i,startOffset-lineOffset); activeSlotsLabel.setText(intToStr(masterServerInfo->getActiveSlots())+"/"+intToStr(masterServerInfo->getNetworkSlots())+"/"+intToStr(masterServerInfo->getConnectedClients())); + i+=50; + externalConnectPort.init(i,startOffset-lineOffset); + externalConnectPort.setText(intToStr(masterServerInfo->getExternalConnectPort())); + i+=50; selectButton.init(i, startOffset-lineOffset, 30); selectButton.setText(">"); @@ -122,7 +126,8 @@ void ServerLine::render(){ renderer.renderLabel(&techLabel); renderer.renderLabel(&mapLabel); renderer.renderLabel(&tilesetLabel); - renderer.renderLabel(&activeSlotsLabel); + renderer.renderLabel(&activeSlotsLabel); + renderer.renderLabel(&externalConnectPort); } // ===================================================== @@ -298,7 +303,8 @@ void MenuStateMasterserver::mouseClick(int x, int y, MouseButton mouseButton){ SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); soundRenderer.playFx(coreData.getClickSoundB()); string connectServerIP = serverLines[i]->getMasterServerInfo()->getIpAddress(); - connectToServer(connectServerIP); + int connectServerPort = serverLines[i]->getMasterServerInfo()->getExternalConnectPort(); + connectToServer(connectServerIP,connectServerPort); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); safeMutex.ReleaseLock(); @@ -418,7 +424,7 @@ void MenuStateMasterserver::updateServerInfo() { std::vector serverEntities; Tokenize(server,serverEntities,"|"); - const int MIN_FIELDS_EXPECTED = 11; + const int MIN_FIELDS_EXPECTED = 12; if(serverEntities.size() >= MIN_FIELDS_EXPECTED) { Lang &lang= Lang::getInstance(); @@ -446,6 +452,7 @@ void MenuStateMasterserver::updateServerInfo() { masterServerInfo->setActiveSlots(strToInt(serverEntities[8])); masterServerInfo->setNetworkSlots(strToInt(serverEntities[9])); masterServerInfo->setConnectedClients(strToInt(serverEntities[10])); + masterServerInfo->setExternalConnectPort(strToInt(serverEntities[11])); //printf("Getting Ping time for host %s\n",masterServerInfo->getIpAddress().c_str()); //float pingTime = Socket::getAveragePingMS(masterServerInfo->getIpAddress().c_str(),1); @@ -490,7 +497,7 @@ void MenuStateMasterserver::updateServerInfo() { } -bool MenuStateMasterserver::connectToServer(string ipString) +bool MenuStateMasterserver::connectToServer(string ipString, int port) { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] START ipString='%s'\n",__FILE__,__FUNCTION__,ipString.c_str()); @@ -498,11 +505,11 @@ bool MenuStateMasterserver::connectToServer(string ipString) Config& config= Config::getInstance(); Ip serverIp(ipString); - int serverPort = Config::getInstance().getInt("ServerPort",intToStr(GameConstants::serverPort).c_str()); + //int serverPort = Config::getInstance().getInt("ServerPort",intToStr(GameConstants::serverPort).c_str()); + int serverPort = port; SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] try to connect to [%s] serverPort = %d\n",__FILE__,__FUNCTION__,serverIp.getString().c_str(),serverPort); clientInterface->connect(serverIp, serverPort); - if(!clientInterface->isConnected()) - { + if(clientInterface->isConnected() == false) { NetworkManager::getInstance().end(); NetworkManager::getInstance().init(nrClient); @@ -513,8 +520,7 @@ bool MenuStateMasterserver::connectToServer(string ipString) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] connection failed\n",__FILE__,__FUNCTION__); } - else - { + else { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] connected to [%s]\n",__FILE__,__FUNCTION__,serverIp.getString().c_str()); //save server ip @@ -522,7 +528,6 @@ bool MenuStateMasterserver::connectToServer(string ipString) //config.save(); return true; - } } diff --git a/source/glest_game/menu/menu_state_masterserver.h b/source/glest_game/menu/menu_state_masterserver.h index eefc3fda1..6bef86875 100644 --- a/source/glest_game/menu/menu_state_masterserver.h +++ b/source/glest_game/menu/menu_state_masterserver.h @@ -46,6 +46,8 @@ private: GraphicLabel tilesetLabel; GraphicLabel activeSlotsLabel; + GraphicLabel externalConnectPort; + public: ServerLine( MasterServerInfo *mServerInfo, int lineIndex); virtual ~ServerLine(); @@ -105,7 +107,7 @@ public: private: void showMessageBox(const string &text, const string &header, bool toggle); - bool connectToServer(string ipString); + bool connectToServer(string ipString, int port); void clearServerLines(); void updateServerInfo(); diff --git a/source/glest_game/network/masterserver_info.h b/source/glest_game/network/masterserver_info.h index 5f7f90048..12ab088d8 100644 --- a/source/glest_game/network/masterserver_info.h +++ b/source/glest_game/network/masterserver_info.h @@ -41,6 +41,7 @@ protected: int activeSlots; int networkSlots; int connectedClients; + int externalconnectport; public: const string &getGlestVersion() const {return glestVersion;} @@ -56,6 +57,7 @@ public: const int getActiveSlots() const {return activeSlots;} const int getNetworkSlots() const {return networkSlots;} const int getConnectedClients() const {return connectedClients;} + const int getExternalConnectPort() const {return externalconnectport;} @@ -76,6 +78,7 @@ public: void setActiveSlots(int value) { activeSlots = value; } void setNetworkSlots(int value) { networkSlots = value; } void setConnectedClients(int value) { connectedClients = value; } + void setExternalConnectPort(int value) { externalconnectport = value; } }; }}//end namespace