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()) {
//console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]");
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);
}
lastCheckedCRCTilesetName = gameSettings->getTileset();
@ -2165,7 +2165,7 @@ void MenuStateConnectedGame::loadGameSettings(GameSettings *gameSettings) {
if(lastCheckedCRCTechtreeName != gameSettings->getTech()) {
//console.addLine("Checking techtree CRC [" + gameSettings->getTech() + "]");
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);
}
@ -2740,9 +2740,10 @@ void MenuStateConnectedGame::update() {
gameSettings->getTileset() != "") {
//console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]");
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);
}
// Test data synch
//tilesetCRC++;
lastCheckedCRCTilesetValue = tilesetCRC;
@ -2756,7 +2757,7 @@ void MenuStateConnectedGame::update() {
techCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), string("/") + gameSettings->getTech() + string("/*"), ".xml", NULL);
//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);
//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() != "") {
// Check if client has different data, if so force a CRC refresh
bool forceRefresh = false;
if(checkNetworkPlayerDataSynch(false,true, false) == false &&
last_Forced_CheckedCRCTilesetName != gameSettings->getTileset()) {
lastCheckedCRCTilesetName = "";
forceRefresh = true;
last_Forced_CheckedCRCTilesetName = gameSettings->getTileset();
}
if(lastCheckedCRCTilesetName != 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) {
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(gameSettings->getTech() != "") {
// Check if client has different data, if so force a CRC refresh
bool forceRefresh = false;
if(checkNetworkPlayerDataSynch(false,false,true) == false &&
last_Forced_CheckedCRCTechtreeName != gameSettings->getTech()) {
lastCheckedCRCTechtreeName = "";
bool forceRefresh = true;
last_Forced_CheckedCRCTechtreeName = gameSettings->getTech();
}
if(lastCheckedCRCTechtreeName != 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) {
lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL, true);
}
@ -3398,9 +3402,11 @@ void MenuStateCustomGame::loadGameSettings(GameSettings *gameSettings,bool force
if(gameSettings->getMap() != "") {
// Check if client has different data, if so force a CRC refresh
bool forceRefresh = false;
if(checkNetworkPlayerDataSynch(true,false,false) == false &&
last_Forced_CheckedCRCMapName != gameSettings->getMap()) {
lastCheckedCRCMapName = "";
bool forceRefresh = true;
last_Forced_CheckedCRCMapName = gameSettings->getMap();
}