- added initial ability for servers to publish an external port for use with internet games. This is in case we must use soft-haus.com which will work with only a few outgoing port numbers.

*NOTE: This update add's a new field to the PHP / mysql scripts.
This commit is contained in:
Mark Vejvoda
2010-07-03 10:06:31 +00:00
parent ae8e8a71f2
commit 009e6f07e5
4 changed files with 29 additions and 17 deletions

View File

@@ -897,16 +897,16 @@ void MenuStateCustomGame::update() {
else else
{ {
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] C - ctNetwork\n",__FILE__,__FUNCTION__); //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] C - ctNetwork\n",__FILE__,__FUNCTION__);
string port=intToStr(config.getInt("ServerPort")); string port = intToStr(config.getInt("ServerPort"));
if(port!="61357"){ if(port != intToStr(GameConstants::serverPort)){
port = port + " " + lang.get("NonStandardPort")+"!)"; port = port + " " + lang.get("NonStandardPort") + "!)";
} }
else else
{ {
port=port+")"; port = port + ")";
} }
port="("+port; port = "(" + port;
labelNetStatus[i].setText("--- "+port); labelNetStatus[i].setText("--- " + port);
} }
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] END - ctNetwork\n",__FILE__,__FUNCTION__); //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] END - ctNetwork\n",__FILE__,__FUNCTION__);
@@ -1054,6 +1054,8 @@ void MenuStateCustomGame::publishToMasterserver()
publishToServerInfo["activeSlots"] = intToStr(slotCountUsed); publishToServerInfo["activeSlots"] = intToStr(slotCountUsed);
publishToServerInfo["networkSlots"] = intToStr(slotCountHumans); publishToServerInfo["networkSlots"] = intToStr(slotCountHumans);
publishToServerInfo["connectedClients"] = intToStr(slotCountConnectedPlayers); 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__); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
} }

View File

@@ -83,6 +83,10 @@ ServerLine::ServerLine( MasterServerInfo *mServerInfo, int lineIndex)
activeSlotsLabel.init(i,startOffset-lineOffset); activeSlotsLabel.init(i,startOffset-lineOffset);
activeSlotsLabel.setText(intToStr(masterServerInfo->getActiveSlots())+"/"+intToStr(masterServerInfo->getNetworkSlots())+"/"+intToStr(masterServerInfo->getConnectedClients())); 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; i+=50;
selectButton.init(i, startOffset-lineOffset, 30); selectButton.init(i, startOffset-lineOffset, 30);
selectButton.setText(">"); selectButton.setText(">");
@@ -122,7 +126,8 @@ void ServerLine::render(){
renderer.renderLabel(&techLabel); renderer.renderLabel(&techLabel);
renderer.renderLabel(&mapLabel); renderer.renderLabel(&mapLabel);
renderer.renderLabel(&tilesetLabel); 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__); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
soundRenderer.playFx(coreData.getClickSoundB()); soundRenderer.playFx(coreData.getClickSoundB());
string connectServerIP = serverLines[i]->getMasterServerInfo()->getIpAddress(); 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__); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
safeMutex.ReleaseLock(); safeMutex.ReleaseLock();
@@ -418,7 +424,7 @@ void MenuStateMasterserver::updateServerInfo() {
std::vector<std::string> serverEntities; std::vector<std::string> serverEntities;
Tokenize(server,serverEntities,"|"); Tokenize(server,serverEntities,"|");
const int MIN_FIELDS_EXPECTED = 11; const int MIN_FIELDS_EXPECTED = 12;
if(serverEntities.size() >= MIN_FIELDS_EXPECTED) { if(serverEntities.size() >= MIN_FIELDS_EXPECTED) {
Lang &lang= Lang::getInstance(); Lang &lang= Lang::getInstance();
@@ -446,6 +452,7 @@ void MenuStateMasterserver::updateServerInfo() {
masterServerInfo->setActiveSlots(strToInt(serverEntities[8])); masterServerInfo->setActiveSlots(strToInt(serverEntities[8]));
masterServerInfo->setNetworkSlots(strToInt(serverEntities[9])); masterServerInfo->setNetworkSlots(strToInt(serverEntities[9]));
masterServerInfo->setConnectedClients(strToInt(serverEntities[10])); masterServerInfo->setConnectedClients(strToInt(serverEntities[10]));
masterServerInfo->setExternalConnectPort(strToInt(serverEntities[11]));
//printf("Getting Ping time for host %s\n",masterServerInfo->getIpAddress().c_str()); //printf("Getting Ping time for host %s\n",masterServerInfo->getIpAddress().c_str());
//float pingTime = Socket::getAveragePingMS(masterServerInfo->getIpAddress().c_str(),1); //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()); 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(); Config& config= Config::getInstance();
Ip serverIp(ipString); 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); 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); clientInterface->connect(serverIp, serverPort);
if(!clientInterface->isConnected()) if(clientInterface->isConnected() == false) {
{
NetworkManager::getInstance().end(); NetworkManager::getInstance().end();
NetworkManager::getInstance().init(nrClient); 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__); 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()); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] connected to [%s]\n",__FILE__,__FUNCTION__,serverIp.getString().c_str());
//save server ip //save server ip
@@ -522,7 +528,6 @@ bool MenuStateMasterserver::connectToServer(string ipString)
//config.save(); //config.save();
return true; return true;
} }
} }

View File

@@ -46,6 +46,8 @@ private:
GraphicLabel tilesetLabel; GraphicLabel tilesetLabel;
GraphicLabel activeSlotsLabel; GraphicLabel activeSlotsLabel;
GraphicLabel externalConnectPort;
public: public:
ServerLine( MasterServerInfo *mServerInfo, int lineIndex); ServerLine( MasterServerInfo *mServerInfo, int lineIndex);
virtual ~ServerLine(); virtual ~ServerLine();
@@ -105,7 +107,7 @@ public:
private: private:
void showMessageBox(const string &text, const string &header, bool toggle); void showMessageBox(const string &text, const string &header, bool toggle);
bool connectToServer(string ipString); bool connectToServer(string ipString, int port);
void clearServerLines(); void clearServerLines();
void updateServerInfo(); void updateServerInfo();

View File

@@ -41,6 +41,7 @@ protected:
int activeSlots; int activeSlots;
int networkSlots; int networkSlots;
int connectedClients; int connectedClients;
int externalconnectport;
public: public:
const string &getGlestVersion() const {return glestVersion;} const string &getGlestVersion() const {return glestVersion;}
@@ -56,6 +57,7 @@ public:
const int getActiveSlots() const {return activeSlots;} const int getActiveSlots() const {return activeSlots;}
const int getNetworkSlots() const {return networkSlots;} const int getNetworkSlots() const {return networkSlots;}
const int getConnectedClients() const {return connectedClients;} const int getConnectedClients() const {return connectedClients;}
const int getExternalConnectPort() const {return externalconnectport;}
@@ -76,6 +78,7 @@ public:
void setActiveSlots(int value) { activeSlots = value; } void setActiveSlots(int value) { activeSlots = value; }
void setNetworkSlots(int value) { networkSlots = value; } void setNetworkSlots(int value) { networkSlots = value; }
void setConnectedClients(int value) { connectedClients = value; } void setConnectedClients(int value) { connectedClients = value; }
void setExternalConnectPort(int value) { externalconnectport = value; }
}; };
}}//end namespace }}//end namespace