From 29bb7800f69ef0fd328223d16920f9079a12008d Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Fri, 15 Apr 2011 02:53:05 +0000 Subject: [PATCH] - attempt to solve techtree and faction crc issues --- .../menu/menu_state_connected_game.cpp | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/source/glest_game/menu/menu_state_connected_game.cpp b/source/glest_game/menu/menu_state_connected_game.cpp index 04834110..478607b4 100644 --- a/source/glest_game/menu/menu_state_connected_game.cpp +++ b/source/glest_game/menu/menu_state_connected_game.cpp @@ -1144,11 +1144,11 @@ void MenuStateConnectedGame::update() { gameSettings->getTech() != "") { //console.addLine("Checking techtree CRC [" + gameSettings->getTech() + "]"); 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) { 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, ""); } @@ -1163,8 +1163,7 @@ void MenuStateConnectedGame::update() { if( lastUpdateDate <= 0 || difftime(time(NULL),lastUpdateDate) >= REFRESH_CRC_DAY_SECONDS) { techCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), string("/") + gameSettings->getTech() + string("/*"), ".xml", NULL, true); - - clientInterface->sendTextMessage("#3 TechCRC = " + intToStr(techCRC) + " remoteCRC = " + intToStr(gameSettings->getTechCRC()),-1, true, ""); + //clientInterface->sendTextMessage("#3 TechCRC = " + intToStr(techCRC) + " remoteCRC = " + intToStr(gameSettings->getTechCRC()),-1, true, ""); } } @@ -1194,6 +1193,23 @@ void MenuStateConnectedGame::update() { else { factionCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/factions/" + factionName + "/*", ".xml", NULL); } + if(factionCRC == 0) { + factionCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/factions/" + factionName + "/*", ".xml", NULL, true); + } + + if(factionCRC != 0) { + vector > serverFactionCRCList = gameSettings->getFactionCRCList(); + for(unsigned int factionIdx1 = 0; factionIdx1 < serverFactionCRCList.size(); ++factionIdx1) { + pair &serverFaction = serverFactionCRCList[factionIdx1]; + if(serverFaction.first == factionName) { + if(serverFaction.second != factionCRC) { + factionCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/factions/" + factionName + "/*", ".xml", NULL, true); + } + break; + } + } + } + } factionCRCList.push_back(make_pair(factionName,factionCRC)); }