From 9ab6732f860f7f354b6a60cabd49144c91f62603 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Sat, 15 May 2010 18:49:45 +0000 Subject: [PATCH] added some safety checks if user does not have masterserver setup properly --- .../menu/menu_state_masterserver.cpp | 74 +++++++++++-------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/source/glest_game/menu/menu_state_masterserver.cpp b/source/glest_game/menu/menu_state_masterserver.cpp index c9b74b77..ef33044d 100644 --- a/source/glest_game/menu/menu_state_masterserver.cpp +++ b/source/glest_game/menu/menu_state_masterserver.cpp @@ -138,8 +138,11 @@ MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMen labelTitle.init(330, 700); labelTitle.setText(lang.get("AvailableServers")); + if(Config::getInstance().getString("Masterserver","") == "") { + labelTitle.setText("*** " + lang.get("AvailableServers")); + } + // bottom - buttonReturn.init(50, 70, 150); buttonCreateGame.init(300, 70, 150); buttonRefresh.init(550, 70, 150); @@ -277,44 +280,53 @@ void MenuStateMasterserver::simpleTask() { } void MenuStateMasterserver::updateServerInfo() { - needUpdateFromServer = false; - //MasterServerInfos masterServerInfos; - clearServerLines(); + try { + needUpdateFromServer = false; + //MasterServerInfos masterServerInfos; + clearServerLines(); - std::string serverInfo = SystemFlags::getHTTP(Config::getInstance().getString("Masterserver")+"showServersForGlest.php"); + if(Config::getInstance().getString("Masterserver","") != "") { + std::string serverInfo = SystemFlags::getHTTP(Config::getInstance().getString("Masterserver")+"showServersForGlest.php"); - std::vector serverList; - Tokenize(serverInfo,serverList,"\n"); - for(int i=0; i < serverList.size(); i++) { - string &server = serverList[i]; - std::vector serverEntities; - Tokenize(server,serverEntities,"|"); + std::vector serverList; + Tokenize(serverInfo,serverList,"\n"); + for(int i=0; i < serverList.size(); i++) { + string &server = serverList[i]; + std::vector serverEntities; + Tokenize(server,serverEntities,"|"); - const int MIN_FIELDS_EXPECTED = 11; - if(serverEntities.size() >= MIN_FIELDS_EXPECTED) { - MasterServerInfo *masterServerInfo=new MasterServerInfo(); + const int MIN_FIELDS_EXPECTED = 11; + if(serverEntities.size() >= MIN_FIELDS_EXPECTED) { + MasterServerInfo *masterServerInfo=new MasterServerInfo(); - //general info: - masterServerInfo->setGlestVersion(serverEntities[0]); - masterServerInfo->setPlatform(serverEntities[1]); - masterServerInfo->setBinaryCompileDate(serverEntities[2]); + //general info: + masterServerInfo->setGlestVersion(serverEntities[0]); + masterServerInfo->setPlatform(serverEntities[1]); + masterServerInfo->setBinaryCompileDate(serverEntities[2]); - //game info: - masterServerInfo->setServerTitle(serverEntities[3]); - masterServerInfo->setIpAddress(serverEntities[4]); + //game info: + masterServerInfo->setServerTitle(serverEntities[3]); + masterServerInfo->setIpAddress(serverEntities[4]); - //game setup info: - masterServerInfo->setTech(serverEntities[5]); - masterServerInfo->setMap(serverEntities[6]); - masterServerInfo->setTileset(serverEntities[7]); - masterServerInfo->setActiveSlots(strToInt(serverEntities[8])); - masterServerInfo->setNetworkSlots(strToInt(serverEntities[9])); - masterServerInfo->setConnectedClients(strToInt(serverEntities[10])); + //game setup info: + masterServerInfo->setTech(serverEntities[5]); + masterServerInfo->setMap(serverEntities[6]); + masterServerInfo->setTileset(serverEntities[7]); + masterServerInfo->setActiveSlots(strToInt(serverEntities[8])); + masterServerInfo->setNetworkSlots(strToInt(serverEntities[9])); + masterServerInfo->setConnectedClients(strToInt(serverEntities[10])); - serverLines.push_back(new ServerLine( masterServerInfo, i)); + serverLines.push_back(new ServerLine( masterServerInfo, i)); + } + } } - } - //masterServerInfos.push_back(masterServerInfo); + //masterServerInfos.push_back(masterServerInfo); + } + catch(const exception &e){ + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] Line: %d, error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what()); + + throw runtime_error(e.what()); + } }