force crc refresh for both client and server when mismatched

This commit is contained in:
Mark Vejvoda 2013-06-24 23:36:03 +00:00
parent 88ed55ca8e
commit a689dd58a4
2 changed files with 13 additions and 6 deletions

View File

@ -2152,7 +2152,7 @@ void MenuStateConnectedGame::loadGameSettings(GameSettings *gameSettings) {
if(lastCheckedCRCTilesetName != gameSettings->getTileset()) { if(lastCheckedCRCTilesetName != gameSettings->getTileset()) {
//console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]"); //console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]");
lastCheckedCRCTilesetValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL); lastCheckedCRCTilesetValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL);
if(lastCheckedCRCTilesetValue == 0) { if(lastCheckedCRCTilesetValue == 0 || lastCheckedCRCTilesetValue != gameSettings->getTilesetCRC()) {
lastCheckedCRCTilesetValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL, true); lastCheckedCRCTilesetValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL, true);
} }
lastCheckedCRCTilesetName = gameSettings->getTileset(); lastCheckedCRCTilesetName = gameSettings->getTileset();
@ -2165,7 +2165,7 @@ void MenuStateConnectedGame::loadGameSettings(GameSettings *gameSettings) {
if(lastCheckedCRCTechtreeName != gameSettings->getTech()) { if(lastCheckedCRCTechtreeName != gameSettings->getTech()) {
//console.addLine("Checking techtree CRC [" + gameSettings->getTech() + "]"); //console.addLine("Checking techtree CRC [" + gameSettings->getTech() + "]");
lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL); lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL);
if(lastCheckedCRCTechtreeValue == 0) { if(lastCheckedCRCTechtreeValue == 0 || lastCheckedCRCTechtreeValue != gameSettings->getTechCRC()) {
lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL, true); lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL, true);
} }
@ -2740,9 +2740,10 @@ void MenuStateConnectedGame::update() {
gameSettings->getTileset() != "") { gameSettings->getTileset() != "") {
//console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]"); //console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]");
tilesetCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL); tilesetCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL);
if(tilesetCRC == 0) { if(tilesetCRC == 0 || tilesetCRC != gameSettings->getTilesetCRC()) {
tilesetCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL, true); tilesetCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL, true);
} }
// Test data synch // Test data synch
//tilesetCRC++; //tilesetCRC++;
lastCheckedCRCTilesetValue = tilesetCRC; lastCheckedCRCTilesetValue = tilesetCRC;
@ -2756,7 +2757,7 @@ void MenuStateConnectedGame::update() {
techCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), string("/") + gameSettings->getTech() + string("/*"), ".xml", NULL); techCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), string("/") + gameSettings->getTech() + string("/*"), ".xml", NULL);
//clientInterface->sendTextMessage("#1 TechCRC = " + intToStr(techCRC) + " remoteCRC = " + intToStr(gameSettings->getTechCRC()),-1, true, ""); //clientInterface->sendTextMessage("#1 TechCRC = " + intToStr(techCRC) + " remoteCRC = " + intToStr(gameSettings->getTechCRC()),-1, true, "");
if(techCRC == 0) { if(techCRC == 0 || tilesetCRC != gameSettings->getTechCRC()) {
techCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), string("/") + gameSettings->getTech() + string("/*"), ".xml", NULL, true); techCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), string("/") + gameSettings->getTech() + string("/*"), ".xml", NULL, true);
//clientInterface->sendTextMessage("#2 TechCRC = " + intToStr(techCRC) + " remoteCRC = " + intToStr(gameSettings->getTechCRC()),-1, true, ""); //clientInterface->sendTextMessage("#2 TechCRC = " + intToStr(techCRC) + " remoteCRC = " + intToStr(gameSettings->getTechCRC()),-1, true, "");
} }

View File

@ -3340,15 +3340,17 @@ void MenuStateCustomGame::loadGameSettings(GameSettings *gameSettings,bool force
if( gameSettings->getTileset() != "") { if( gameSettings->getTileset() != "") {
// Check if client has different data, if so force a CRC refresh // Check if client has different data, if so force a CRC refresh
bool forceRefresh = false;
if(checkNetworkPlayerDataSynch(false,true, false) == false && if(checkNetworkPlayerDataSynch(false,true, false) == false &&
last_Forced_CheckedCRCTilesetName != gameSettings->getTileset()) { last_Forced_CheckedCRCTilesetName != gameSettings->getTileset()) {
lastCheckedCRCTilesetName = ""; lastCheckedCRCTilesetName = "";
forceRefresh = true;
last_Forced_CheckedCRCTilesetName = gameSettings->getTileset(); last_Forced_CheckedCRCTilesetName = gameSettings->getTileset();
} }
if(lastCheckedCRCTilesetName != gameSettings->getTileset()) { if(lastCheckedCRCTilesetName != gameSettings->getTileset()) {
//console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]"); //console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]");
lastCheckedCRCTilesetValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL); lastCheckedCRCTilesetValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL,forceRefresh);
if(lastCheckedCRCTilesetValue == 0) { if(lastCheckedCRCTilesetValue == 0) {
lastCheckedCRCTilesetValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL, true); lastCheckedCRCTilesetValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml", NULL, true);
} }
@ -3360,15 +3362,17 @@ void MenuStateCustomGame::loadGameSettings(GameSettings *gameSettings,bool force
if(config.getBool("DisableServerLobbyTechtreeCRCCheck","false") == false) { if(config.getBool("DisableServerLobbyTechtreeCRCCheck","false") == false) {
if(gameSettings->getTech() != "") { if(gameSettings->getTech() != "") {
// Check if client has different data, if so force a CRC refresh // Check if client has different data, if so force a CRC refresh
bool forceRefresh = false;
if(checkNetworkPlayerDataSynch(false,false,true) == false && if(checkNetworkPlayerDataSynch(false,false,true) == false &&
last_Forced_CheckedCRCTechtreeName != gameSettings->getTech()) { last_Forced_CheckedCRCTechtreeName != gameSettings->getTech()) {
lastCheckedCRCTechtreeName = ""; lastCheckedCRCTechtreeName = "";
bool forceRefresh = true;
last_Forced_CheckedCRCTechtreeName = gameSettings->getTech(); last_Forced_CheckedCRCTechtreeName = gameSettings->getTech();
} }
if(lastCheckedCRCTechtreeName != gameSettings->getTech()) { if(lastCheckedCRCTechtreeName != gameSettings->getTech()) {
//console.addLine("Checking techtree CRC [" + gameSettings->getTech() + "]"); //console.addLine("Checking techtree CRC [" + gameSettings->getTech() + "]");
lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL); lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL,forceRefresh);
if(lastCheckedCRCTechtreeValue == 0) { if(lastCheckedCRCTechtreeValue == 0) {
lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL, true); lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL, true);
} }
@ -3398,9 +3402,11 @@ void MenuStateCustomGame::loadGameSettings(GameSettings *gameSettings,bool force
if(gameSettings->getMap() != "") { if(gameSettings->getMap() != "") {
// Check if client has different data, if so force a CRC refresh // Check if client has different data, if so force a CRC refresh
bool forceRefresh = false;
if(checkNetworkPlayerDataSynch(true,false,false) == false && if(checkNetworkPlayerDataSynch(true,false,false) == false &&
last_Forced_CheckedCRCMapName != gameSettings->getMap()) { last_Forced_CheckedCRCMapName != gameSettings->getMap()) {
lastCheckedCRCMapName = ""; lastCheckedCRCMapName = "";
bool forceRefresh = true;
last_Forced_CheckedCRCMapName = gameSettings->getMap(); last_Forced_CheckedCRCMapName = gameSettings->getMap();
} }