- 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
{
//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__);
}

View File

@ -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<std::string> 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;
}
}

View File

@ -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();

View File

@ -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