- updated to fully support customized external port assignments for users firewalls

This commit is contained in:
Mark Vejvoda
2010-07-03 10:53:13 +00:00
parent 009e6f07e5
commit 718d22df95
2 changed files with 40 additions and 7 deletions

View File

@@ -173,9 +173,9 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu, b
labelTechTree.init(600, mapHeadPos); labelTechTree.init(600, mapHeadPos);
labelPublishServer.init(190, networkHeadPos, 100); labelPublishServer.init(120, networkHeadPos, 100);
labelPublishServer.setText(lang.get("PublishServer")); labelPublishServer.setText(lang.get("PublishServer"));
listBoxPublishServer.init(200, networkPos, 100); listBoxPublishServer.init(130, networkPos, 100);
listBoxPublishServer.pushBackItem(lang.get("Yes")); listBoxPublishServer.pushBackItem(lang.get("Yes"));
listBoxPublishServer.pushBackItem(lang.get("No")); listBoxPublishServer.pushBackItem(lang.get("No"));
if(openNetworkSlots) if(openNetworkSlots)
@@ -183,6 +183,22 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu, b
else else
listBoxPublishServer.setSelectedItemIndex(1); listBoxPublishServer.setSelectedItemIndex(1);
labelPublishServerExternalPort.init(290, networkHeadPos, 150);
labelPublishServerExternalPort.setText(lang.get("PublishServerExternalPort"));
listBoxPublishServerExternalPort.init(300, networkPos, 100);
string supportExternalPortList = config.getString("MasterServerExternalPortList",intToStr(GameConstants::serverPort).c_str());
std::vector<std::string> externalPortList;
Tokenize(supportExternalPortList,externalPortList,",");
for(int idx = 0; idx < externalPortList.size(); idx++) {
if(externalPortList[idx] != "" && IsNumeric(externalPortList[idx].c_str(),false)) {
listBoxPublishServerExternalPort.pushBackItem(externalPortList[idx]);
}
}
listBoxPublishServer.setSelectedItemIndex(0);
// Network Frame Period // Network Frame Period
labelNetworkFramePeriod.init(440, networkHeadPos, 80); labelNetworkFramePeriod.init(440, networkHeadPos, 80);
labelNetworkFramePeriod.setText(lang.get("NetworkFramePeriod")); labelNetworkFramePeriod.setText(lang.get("NetworkFramePeriod"));
@@ -543,7 +559,12 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton){
lastSetChangedGameSettings = time(NULL); lastSetChangedGameSettings = time(NULL);
} }
} }
else if(listBoxPublishServer.mouseClick(x, y)&&listBoxPublishServer.getEditable()){ else if(listBoxPublishServer.mouseClick(x, y) && listBoxPublishServer.getEditable()) {
MutexSafeWrapper safeMutex(&masterServerThreadAccessor);
needToRepublishToMasterserver = true;
soundRenderer.playFx(coreData.getClickSoundC());
}
else if(listBoxPublishServerExternalPort.mouseClick(x, y) && listBoxPublishServerExternalPort.getEditable()) {
MutexSafeWrapper safeMutex(&masterServerThreadAccessor); MutexSafeWrapper safeMutex(&masterServerThreadAccessor);
needToRepublishToMasterserver = true; needToRepublishToMasterserver = true;
soundRenderer.playFx(coreData.getClickSoundC()); soundRenderer.playFx(coreData.getClickSoundC());
@@ -634,6 +655,8 @@ void MenuStateCustomGame::mouseMove(int x, int y, const MouseState *ms){
listBoxTileset.mouseMove(x, y); listBoxTileset.mouseMove(x, y);
listBoxTechTree.mouseMove(x, y); listBoxTechTree.mouseMove(x, y);
listBoxPublishServer.mouseMove(x, y); listBoxPublishServer.mouseMove(x, y);
listBoxPublishServerExternalPort.mouseMove(x, y);
listBoxEnableObserverMode.mouseMove(x, y); listBoxEnableObserverMode.mouseMove(x, y);
listBoxEnableServerControlledAI.mouseMove(x, y); listBoxEnableServerControlledAI.mouseMove(x, y);
labelNetworkFramePeriod.mouseMove(x, y); labelNetworkFramePeriod.mouseMove(x, y);
@@ -686,6 +709,8 @@ void MenuStateCustomGame::render(){
{ {
renderer.renderListBox(&listBoxPublishServer); renderer.renderListBox(&listBoxPublishServer);
renderer.renderLabel(&labelPublishServer); renderer.renderLabel(&labelPublishServer);
renderer.renderListBox(&listBoxPublishServerExternalPort);
renderer.renderLabel(&labelPublishServerExternalPort);
renderer.renderListBox(&listBoxEnableServerControlledAI); renderer.renderListBox(&listBoxEnableServerControlledAI);
renderer.renderLabel(&labelEnableServerControlledAI); renderer.renderLabel(&labelEnableServerControlledAI);
renderer.renderLabel(&labelNetworkFramePeriod); renderer.renderLabel(&labelNetworkFramePeriod);
@@ -934,16 +959,17 @@ void MenuStateCustomGame::update() {
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__);
if(hasOneNetworkSlotOpen) if(hasOneNetworkSlotOpen) {
{
//listBoxPublishServer.setSelectedItemIndex(0); //listBoxPublishServer.setSelectedItemIndex(0);
listBoxPublishServer.setEditable(true); listBoxPublishServer.setEditable(true);
listBoxPublishServerExternalPort.setEditable(true);
listBoxEnableServerControlledAI.setEditable(true); listBoxEnableServerControlledAI.setEditable(true);
} }
else else
{ {
listBoxPublishServer.setSelectedItemIndex(1); listBoxPublishServer.setSelectedItemIndex(1);
listBoxPublishServer.setEditable(false); listBoxPublishServer.setEditable(false);
listBoxPublishServerExternalPort.setEditable(false);
listBoxEnableServerControlledAI.setEditable(false); listBoxEnableServerControlledAI.setEditable(false);
} }
@@ -1054,7 +1080,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())); //string externalport = intToStr(Config::getInstance().getInt("ExternalServerPort",intToStr(Config::getInstance().getInt("ServerPort")).c_str()));
string externalport = listBoxPublishServerExternalPort.getSelectedItem();
publishToServerInfo["externalconnectport"] = externalport; 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__);
@@ -1241,6 +1268,7 @@ void MenuStateCustomGame::saveGameSettingsToFile(std::string fileName) {
saveGameFile << "EnableObserverModeAtEndGame=" << gameSettings.getEnableObserverModeAtEndGame() << std::endl; saveGameFile << "EnableObserverModeAtEndGame=" << gameSettings.getEnableObserverModeAtEndGame() << std::endl;
saveGameFile << "EnableServerControlledAI=" << gameSettings.getEnableServerControlledAI() << std::endl; saveGameFile << "EnableServerControlledAI=" << gameSettings.getEnableServerControlledAI() << std::endl;
saveGameFile << "NetworkFramePeriod=" << gameSettings.getNetworkFramePeriod() << std::endl; saveGameFile << "NetworkFramePeriod=" << gameSettings.getNetworkFramePeriod() << std::endl;
saveGameFile << "ExternalPortNumber=" << listBoxPublishServerExternalPort.getSelectedItem() << std::endl;
saveGameFile << "FactionThisFactionIndex=" << gameSettings.getThisFactionIndex() << std::endl; saveGameFile << "FactionThisFactionIndex=" << gameSettings.getThisFactionIndex() << std::endl;
saveGameFile << "FactionCount=" << gameSettings.getFactionCount() << std::endl; saveGameFile << "FactionCount=" << gameSettings.getFactionCount() << std::endl;
@@ -1336,6 +1364,8 @@ GameSettings MenuStateCustomGame::loadGameSettingsFromFile(std::string fileName)
labelNetworkFramePeriod.setText(lang.get("NetworkFramePeriod")); labelNetworkFramePeriod.setText(lang.get("NetworkFramePeriod"));
listBoxPublishServerExternalPort.setSelectedItem(intToStr(properties.getInt("ExternalPortNumber",listBoxPublishServerExternalPort.getSelectedItem().c_str())));
listBoxNetworkFramePeriod.setSelectedItem(intToStr(gameSettings.getNetworkFramePeriod()/10*10)); listBoxNetworkFramePeriod.setSelectedItem(intToStr(gameSettings.getNetworkFramePeriod()/10*10));
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

@@ -59,6 +59,9 @@ private:
GraphicLabel labelPublishServer; GraphicLabel labelPublishServer;
GraphicListBox listBoxPublishServer; GraphicListBox listBoxPublishServer;
GraphicLabel labelPublishServerExternalPort;
GraphicListBox listBoxPublishServerExternalPort;
GraphicMessageBox mainMessageBox; GraphicMessageBox mainMessageBox;
int mainMessageBoxState; int mainMessageBoxState;