bugfix for when client is missing the tech that was selected by server

This commit is contained in:
Mark Vejvoda
2010-06-03 22:52:56 +00:00
parent 8005fa96e1
commit a5e417fff9

View File

@@ -505,11 +505,12 @@ void MenuStateConnectedGame::update()
bool hasFactions = true; bool hasFactions = true;
if(currentFactionName != gameSettings->getTech()) if(currentFactionName != gameSettings->getTech())
{ {
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] hasFactions = %d, currentFactionName [%s]\n",__FILE__,__FUNCTION__,__LINE__,hasFactions,currentFactionName.c_str());
currentFactionName = gameSettings->getTech(); currentFactionName = gameSettings->getTech();
hasFactions = loadFactions(gameSettings,false); hasFactions = loadFactions(gameSettings,false);
} }
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] hasFactions = %d\n",__FILE__,__FUNCTION__,__LINE__,hasFactions); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] hasFactions = %d, currentFactionName [%s]\n",__FILE__,__FUNCTION__,__LINE__,hasFactions,currentFactionName.c_str());
// map // map
maps.push_back(formatString(gameSettings->getMap())); maps.push_back(formatString(gameSettings->getMap()));
@@ -519,7 +520,7 @@ void MenuStateConnectedGame::update()
currentMap = gameSettings->getMap(); currentMap = gameSettings->getMap();
} }
//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__);
// FogOfWar // FogOfWar
if(gameSettings->getFogOfWar()){ if(gameSettings->getFogOfWar()){
@@ -539,16 +540,17 @@ void MenuStateConnectedGame::update()
listBoxTeams[i].setEditable(false); listBoxTeams[i].setEditable(false);
} }
//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(hasFactions == true) { if(hasFactions == true) {
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] errorOnMissingData = %d\n",__FILE__,__FUNCTION__,__LINE__,errorOnMissingData);
for(int i=0; i<gameSettings->getFactionCount(); ++i){ for(int i=0; i<gameSettings->getFactionCount(); ++i){
int slot=gameSettings->getStartLocationIndex(i); int slot=gameSettings->getStartLocationIndex(i);
listBoxControls[slot].setSelectedItemIndex(gameSettings->getFactionControl(i),errorOnMissingData); listBoxControls[slot].setSelectedItemIndex(gameSettings->getFactionControl(i),errorOnMissingData);
listBoxTeams[slot].setSelectedItemIndex(gameSettings->getTeam(i),errorOnMissingData); listBoxTeams[slot].setSelectedItemIndex(gameSettings->getTeam(i),errorOnMissingData);
listBoxFactions[slot].setSelectedItem(formatString(gameSettings->getFactionTypeName(i)),errorOnMissingData); //listBoxFactions[slot].setSelectedItem(formatString(gameSettings->getFactionTypeName(i)),errorOnMissingData);
listBoxFactions[slot].setSelectedItem(formatString(gameSettings->getFactionTypeName(i)),false);
if(gameSettings->getFactionControl(i) == ctNetwork ){ if(gameSettings->getFactionControl(i) == ctNetwork ){
labelNetStatus[slot].setText(gameSettings->getNetworkPlayerName(i)); labelNetStatus[slot].setText(gameSettings->getNetworkPlayerName(i));
@@ -609,8 +611,8 @@ void MenuStateConnectedGame::update()
bool MenuStateConnectedGame::loadFactions(const GameSettings *gameSettings, bool errorOnNoFactions){ bool MenuStateConnectedGame::loadFactions(const GameSettings *gameSettings, bool errorOnNoFactions){
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__);
bool foundFactions = false;
vector<string> results; vector<string> results;
Config &config = Config::getInstance(); Config &config = Config::getInstance();
vector<string> techPaths = config.getPathListForType(ptTechs); vector<string> techPaths = config.getPathListForType(ptTechs);
@@ -644,6 +646,7 @@ bool MenuStateConnectedGame::loadFactions(const GameSettings *gameSettings, bool
sprintf(szMsg,"Player: %s is missing the techtree: %s",Config::getInstance().getString("NetPlayerName",Socket::getHostName().c_str()).c_str(),gameSettings->getTech().c_str()); sprintf(szMsg,"Player: %s is missing the techtree: %s",Config::getInstance().getString("NetPlayerName",Socket::getHostName().c_str()).c_str(),gameSettings->getTech().c_str());
clientInterface->sendTextMessage(szMsg,-1); clientInterface->sendTextMessage(szMsg,-1);
foundFactions = false;
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__);
} }
else { else {
@@ -656,10 +659,12 @@ bool MenuStateConnectedGame::loadFactions(const GameSettings *gameSettings, bool
for(int i=0; i<GameConstants::maxPlayers; ++i){ for(int i=0; i<GameConstants::maxPlayers; ++i){
listBoxFactions[i].setItems(results); listBoxFactions[i].setItems(results);
} }
foundFactions = (results.size() > 0);
} }
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__);
return (results.size() > 0); return foundFactions;
} }
// ============ PRIVATE =========================== // ============ PRIVATE ===========================