From 152a9328b4fe5d4a09012052e0e16927bcfa8b37 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Tue, 16 Oct 2012 05:27:51 +0000 Subject: [PATCH] - mod center now gets glest version passed into it and filters out incompatible game data --- .../menu/menu_state_connected_game.cpp | 11 +++-- .../menu/menu_state_custom_game.cpp | 2 + source/glest_game/menu/menu_state_mods.cpp | 9 +++-- source/masterserver/showMapsForGlest.php | 39 +++++++++++++++--- source/masterserver/showScenariosForGlest.php | 40 ++++++++++++++++--- source/masterserver/showTechsForGlest.php | 39 +++++++++++++++--- source/masterserver/showTilesetsForGlest.php | 39 +++++++++++++++--- 7 files changed, 151 insertions(+), 28 deletions(-) diff --git a/source/glest_game/menu/menu_state_connected_game.cpp b/source/glest_game/menu/menu_state_connected_game.cpp index 090df472..69e70302 100644 --- a/source/glest_game/menu/menu_state_connected_game.cpp +++ b/source/glest_game/menu/menu_state_connected_game.cpp @@ -868,12 +868,13 @@ void MenuStateConnectedGame::simpleTask(BaseThread *callingThread) { if(config.getString("Masterserver","") != "") { string baseURL = config.getString("Masterserver"); string phpVersionParam = config.getString("phpVersionParam","?version=0.1"); + string gameVersion = "&glestVersion=" + SystemFlags::escapeURL(glestVersionString); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line %d] About to call first http url, base [%s]..\n",__FILE__,__FUNCTION__,__LINE__,baseURL.c_str()); CURL *handle = SystemFlags::initHTTP(); CURLcode curlResult = CURLE_OK; - techsMetaData = SystemFlags::getHTTP(baseURL + "showTechsForGlest.php"+phpVersionParam,handle,-1,&curlResult); + techsMetaData = SystemFlags::getHTTP(baseURL + "showTechsForGlest.php"+phpVersionParam+gameVersion,handle,-1,&curlResult); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("techsMetaData [%s] curlResult = %d\n",techsMetaData.c_str(),curlResult); if(callingThread->getQuitStatus() == true || safeMutexThreadOwner.isValidMutex() == false) { @@ -892,7 +893,7 @@ void MenuStateConnectedGame::simpleTask(BaseThread *callingThread) { (curlResult != CURLE_COULDNT_RESOLVE_HOST && curlResult != CURLE_COULDNT_CONNECT)) { - tilesetsMetaData = SystemFlags::getHTTP(baseURL + "showTilesetsForGlest.php"+phpVersionParam,handle,-1,&curlResult); + tilesetsMetaData = SystemFlags::getHTTP(baseURL + "showTilesetsForGlest.php"+phpVersionParam+gameVersion,handle,-1,&curlResult); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("tilesetsMetaData [%s]\n",tilesetsMetaData.c_str()); if(callingThread->getQuitStatus() == true || safeMutexThreadOwner.isValidMutex() == false) { @@ -907,7 +908,7 @@ void MenuStateConnectedGame::simpleTask(BaseThread *callingThread) { console.addLine(string("#2 ") + szBuf,true); } - mapsMetaData = SystemFlags::getHTTP(baseURL + "showMapsForGlest.php"+phpVersionParam,handle,-1,&curlResult); + mapsMetaData = SystemFlags::getHTTP(baseURL + "showMapsForGlest.php"+phpVersionParam+gameVersion,handle,-1,&curlResult); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("mapsMetaData [%s]\n",mapsMetaData.c_str()); if(callingThread->getQuitStatus() == true || safeMutexThreadOwner.isValidMutex() == false) { @@ -922,7 +923,7 @@ void MenuStateConnectedGame::simpleTask(BaseThread *callingThread) { console.addLine(string("#3 ") + szBuf,true); } - scenariosMetaData = SystemFlags::getHTTP(baseURL + "showScenariosForGlest.php"+phpVersionParam,handle,-1,&curlResult); + scenariosMetaData = SystemFlags::getHTTP(baseURL + "showScenariosForGlest.php"+phpVersionParam+gameVersion,handle,-1,&curlResult); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("scenariosMetaData [%s]\n",scenariosMetaData.c_str()); if(curlResult != CURLE_OK) { @@ -2182,6 +2183,8 @@ void MenuStateConnectedGame::render() { renderer.renderMessageBox(&mainMessageBox); } + renderer.renderButton(&buttonDisconnect); + if (initialSettingsReceivedFromServer == false) { return; } diff --git a/source/glest_game/menu/menu_state_custom_game.cpp b/source/glest_game/menu/menu_state_custom_game.cpp index 3de56e0c..96ba25fb 100644 --- a/source/glest_game/menu/menu_state_custom_game.cpp +++ b/source/glest_game/menu/menu_state_custom_game.cpp @@ -1879,6 +1879,8 @@ void MenuStateCustomGame::render() { if(mainMessageBox.getEnabled()) { renderer.renderMessageBox(&mainMessageBox); + + renderer.renderButton(&buttonReturn); } else { if(mapPreviewTexture != NULL) { diff --git a/source/glest_game/menu/menu_state_mods.cpp b/source/glest_game/menu/menu_state_mods.cpp index 01277da9..17776919 100644 --- a/source/glest_game/menu/menu_state_mods.cpp +++ b/source/glest_game/menu/menu_state_mods.cpp @@ -412,12 +412,13 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) { if(config.getString("Masterserver","") != "") { string baseURL = config.getString("Masterserver"); string phpVersionParam = config.getString("phpVersionParam","?version=0.1"); + string gameVersion = "&glestVersion=" + SystemFlags::escapeURL(glestVersionString); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line %d] About to call first http url, base [%s]..\n",__FILE__,__FUNCTION__,__LINE__,baseURL.c_str()); CURL *handle = SystemFlags::initHTTP(); CURLcode curlResult = CURLE_OK; - techsMetaData = SystemFlags::getHTTP(baseURL + "showTechsForGlest.php"+phpVersionParam,handle,-1,&curlResult); + techsMetaData = SystemFlags::getHTTP(baseURL + "showTechsForGlest.php"+phpVersionParam+gameVersion,handle,-1,&curlResult); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("techsMetaData [%s] curlResult = %d\n",techsMetaData.c_str(),curlResult); if(callingThread->getQuitStatus() == true || safeMutexThreadOwner.isValidMutex() == false) { @@ -436,7 +437,7 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) { (curlResult != CURLE_COULDNT_RESOLVE_HOST && curlResult != CURLE_COULDNT_CONNECT)) { - tilesetsMetaData = SystemFlags::getHTTP(baseURL + "showTilesetsForGlest.php"+phpVersionParam,handle,-1,&curlResult); + tilesetsMetaData = SystemFlags::getHTTP(baseURL + "showTilesetsForGlest.php"+phpVersionParam+gameVersion,handle,-1,&curlResult); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("tilesetsMetaData [%s]\n",tilesetsMetaData.c_str()); if(callingThread->getQuitStatus() == true || safeMutexThreadOwner.isValidMutex() == false) { @@ -451,7 +452,7 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) { console.addLine(string("#2 ") + szBuf,true); } - mapsMetaData = SystemFlags::getHTTP(baseURL + "showMapsForGlest.php"+phpVersionParam,handle,-1,&curlResult); + mapsMetaData = SystemFlags::getHTTP(baseURL + "showMapsForGlest.php"+phpVersionParam+gameVersion,handle,-1,&curlResult); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("mapsMetaData [%s]\n",mapsMetaData.c_str()); if(callingThread->getQuitStatus() == true || safeMutexThreadOwner.isValidMutex() == false) { @@ -466,7 +467,7 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) { console.addLine(string("#3 ") + szBuf,true); } - scenariosMetaData = SystemFlags::getHTTP(baseURL + "showScenariosForGlest.php"+phpVersionParam,handle,-1,&curlResult); + scenariosMetaData = SystemFlags::getHTTP(baseURL + "showScenariosForGlest.php"+phpVersionParam+gameVersion,handle,-1,&curlResult); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("scenariosMetaData [%s]\n",scenariosMetaData.c_str()); if(curlResult != CURLE_OK) { diff --git a/source/masterserver/showMapsForGlest.php b/source/masterserver/showMapsForGlest.php index 6d2d8302..9354786f 100644 --- a/source/masterserver/showMapsForGlest.php +++ b/source/masterserver/showMapsForGlest.php @@ -9,7 +9,14 @@ define( 'DB_LINK', db_connect() ); - $maps_in_db = mysql_db_query( MYSQL_DATABASE, 'SELECT * FROM glestmaps WHERE disabled=0 ORDER BY mapname;' ); + if ( isset( $_GET['glestVersion'] ) ) { + $glestVersion = (string) clean_str( $_GET['glestVersion'] ); + } + else { + $glestVersion = ""; + } + $maps_in_db = mysql_db_query( MYSQL_DATABASE, 'SELECT * FROM glestmaps WHERE disabled=0 ORDER BY mapname;' ); + $all_maps = array(); while ( $map = mysql_fetch_array( $maps_in_db ) ) { @@ -24,11 +31,33 @@ header( 'Content-Type: text/plain; charset=utf-8' ); foreach( $all_maps as &$map ) { - $outString = - "${map['mapname']}|${map['playercount']}|${map['crc']}|${map['description']}|${map['url']}|${map['imageUrl']}|"; - $outString = $outString . "\n"; + $itemVersion = 'v' . "${map['glestversion']}"; + $addItem = false; + + if($glestVersion == '') { + if (version_compare("v3.6.0.3",$itemVersion,">=")) { + $addItem = true; + } + } + else if (version_compare($glestVersion,$itemVersion,">=")) { + $addItem = true; + } + + if($addItem == true) { + $mgversion = $_GET["version"]; + if($mgversion == '') + { + $outString = + "${map['mapname']}|${map['playercount']}|${map['crc']}|${map['description']}|${map['url']}|${map['imageUrl']}|"; + } + else { + $outString = + "${map['mapname']}|${map['playercount']}|${map['crcnew']}|${map['description']}|${map['url']}|${map['imageUrl']}|"; + } + $outString = $outString . "\n"; - echo ($outString); + echo ($outString); + } } unset( $all_maps ); unset( $map ); diff --git a/source/masterserver/showScenariosForGlest.php b/source/masterserver/showScenariosForGlest.php index 9bace12e..36864a22 100644 --- a/source/masterserver/showScenariosForGlest.php +++ b/source/masterserver/showScenariosForGlest.php @@ -9,6 +9,14 @@ define( 'DB_LINK', db_connect() ); + if ( isset( $_GET['glestVersion'] ) ) { + $glestVersion = (string) clean_str( $_GET['glestVersion'] ); + } + else { + $glestVersion = ""; + } + + $scenarios_in_db = mysql_db_query( MYSQL_DATABASE, 'SELECT * FROM glestscenarios WHERE disabled=0 ORDER BY scenarioname;' ); $all_scenarios = array(); while ( $scenario = mysql_fetch_array( $scenarios_in_db ) ) @@ -24,11 +32,33 @@ header( 'Content-Type: text/plain; charset=utf-8' ); foreach( $all_scenarios as &$scenario ) { - $outString = - "${scenario['scenarioname']}|${scenario['crc']}|${scenario['description']}|${scenario['url']}|${scenario['imageUrl']}|"; - $outString = $outString . "\n"; - - echo ($outString); + $itemVersion = 'v' . "${scenario['glestversion']}"; + $addItem = false; + + if($glestVersion == '') { + if (version_compare("v3.6.0.3",$itemVersion,">=")) { + $addItem = true; + } + } + else if (version_compare($glestVersion,$itemVersion,">=")) { + $addItem = true; + } + + if($addItem == true) { + $mgversion = $_GET["version"]; + if($mgversion == '') + { + $outString = + "${scenario['scenarioname']}|${scenario['crc']}|${scenario['description']}|${scenario['url']}|${scenario['imageUrl']}|"; + } + else { + $outString = + "${scenario['scenarioname']}|${scenario['crcnew']}|${scenario['description']}|${scenario['url']}|${scenario['imageUrl']}|"; + } + $outString = $outString . "\n"; + + echo ($outString); + } } unset( $all_scenarios ); unset( $scenario ); diff --git a/source/masterserver/showTechsForGlest.php b/source/masterserver/showTechsForGlest.php index 90773128..0584bd6f 100644 --- a/source/masterserver/showTechsForGlest.php +++ b/source/masterserver/showTechsForGlest.php @@ -9,6 +9,13 @@ define( 'DB_LINK', db_connect() ); + if ( isset( $_GET['glestVersion'] ) ) { + $glestVersion = (string) clean_str( $_GET['glestVersion'] ); + } + else { + $glestVersion = ""; + } + $techs_in_db = mysql_db_query( MYSQL_DATABASE, 'SELECT * FROM glesttechs WHERE disabled=0 ORDER BY techname;' ); $all_techs = array(); while ( $tech = mysql_fetch_array( $techs_in_db ) ) @@ -24,11 +31,33 @@ header( 'Content-Type: text/plain; charset=utf-8' ); foreach( $all_techs as &$tech ) { - $outString = - "${tech['techname']}|${tech['factioncount']}|${tech['crc']}|${tech['description']}|${tech['url']}|${tech['imageUrl']}|"; - $outString = $outString . "\n"; - - echo ($outString); + $itemVersion = 'v' . "${tech['glestversion']}"; + $addItem = false; + + if($glestVersion == '') { + if (version_compare("v3.6.0.3",$itemVersion,">=")) { + $addItem = true; + } + } + else if (version_compare($glestVersion,$itemVersion,">=")) { + $addItem = true; + } + + if($addItem == true) { + $mgversion = $_GET["version"]; + if($mgversion == '') + { + $outString = + "${tech['techname']}|${tech['factioncount']}|${tech['crc']}|${tech['description']}|${tech['url']}|${tech['imageUrl']}|"; + } + else { + $outString = + "${tech['techname']}|${tech['factioncount']}|${tech['crcnew']}|${tech['description']}|${tech['url']}|${tech['imageUrl']}|"; + } + $outString = $outString . "\n"; + + echo ($outString); + } } unset( $all_techs ); unset( $tech ); diff --git a/source/masterserver/showTilesetsForGlest.php b/source/masterserver/showTilesetsForGlest.php index d577621e..fe264d12 100644 --- a/source/masterserver/showTilesetsForGlest.php +++ b/source/masterserver/showTilesetsForGlest.php @@ -9,6 +9,13 @@ define( 'DB_LINK', db_connect() ); + if ( isset( $_GET['glestVersion'] ) ) { + $glestVersion = (string) clean_str( $_GET['glestVersion'] ); + } + else { + $glestVersion = ""; + } + $tilesets_in_db = mysql_db_query( MYSQL_DATABASE, 'SELECT * FROM glesttilesets WHERE disabled=0 ORDER BY tilesetname;' ); $all_tilesets = array(); while ( $tileset = mysql_fetch_array( $tilesets_in_db ) ) @@ -24,11 +31,33 @@ header( 'Content-Type: text/plain; charset=utf-8' ); foreach( $all_tilesets as &$tileset ) { - $outString = - "${tileset['tilesetname']}|${tileset['crc']}|${tileset['description']}|${tileset['url']}|${tileset['imageUrl']}|"; - $outString = $outString . "\n"; - - echo ($outString); + $itemVersion = 'v' . "${tileset['glestversion']}"; + $addItem = false; + + if($glestVersion == '') { + if (version_compare("v3.6.0.3",$itemVersion,">=")) { + $addItem = true; + } + } + else if (version_compare($glestVersion,$itemVersion,">=")) { + $addItem = true; + } + + if($addItem == true) { + $mgversion = $_GET["version"]; + if($mgversion == '') + { + $outString = + "${tileset['tilesetname']}|${tileset['crc']}|${tileset['description']}|${tileset['url']}|${tileset['imageUrl']}|"; + } + else { + $outString = + "${tileset['tilesetname']}|${tileset['crcnew']}|${tileset['description']}|${tileset['url']}|${tileset['imageUrl']}|"; + } + $outString = $outString . "\n"; + + echo ($outString); + } } unset( $all_tilesets ); unset( $tileset );