CRC was never recalculated on servers side

This commit is contained in:
titiger 2021-01-06 02:15:58 +01:00
parent c0aa5cc867
commit a1d8ea91a2
2 changed files with 13 additions and 40 deletions

View File

@ -119,9 +119,7 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu,
lastCheckedCRCTechtreeName = "";
lastCheckedCRCMapName = "";
last_Forced_CheckedCRCTilesetName = "";
last_Forced_CheckedCRCTechtreeName = "";
last_Forced_CheckedCRCMapName = "";
initTime= time(NULL); // now
lastCheckedCRCTilesetValue = 0;
lastCheckedCRCTechtreeValue = 0;
@ -3941,21 +3939,16 @@ void MenuStateCustomGame::copyToGameSettings(GameSettings *gameSettings,bool for
gameSettings->setNetworkPauseGameForLaggedClients(((checkBoxNetworkPauseGameForLaggedClients.getValue() == true)));
if( gameSettings->getTileset() != "") {
// Check if client has different data, if so force a CRC refresh
// Check if we have calculated the crc since menu_state started
bool forceRefresh = false;
if(checkNetworkPlayerDataSynch(false,true, false) == false &&
last_Forced_CheckedCRCTilesetName != gameSettings->getTileset()) {
lastCheckedCRCTilesetName = "";
forceRefresh = true;
last_Forced_CheckedCRCTilesetName = gameSettings->getTileset();
}
time_t lastUpdateDate = getFolderTreeContentsCheckSumRecursivelyLastGenerated(config.getPathListForType(ptTilesets,""), string("/") + gameSettings->getTileset() + string("/*"), ".xml");
if(difftime(lastUpdateDate,initTime) <0 ) {
forceRefresh=true;
}
if(lastCheckedCRCTilesetName != gameSettings->getTileset()) {
//console.addLine("Checking tileset CRC [" + gameSettings->getTileset() + "]");
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);
}
lastCheckedCRCTilesetName = gameSettings->getTileset();
}
gameSettings->setTilesetCRC(lastCheckedCRCTilesetValue);
@ -3963,21 +3956,15 @@ void MenuStateCustomGame::copyToGameSettings(GameSettings *gameSettings,bool for
if(config.getBool("DisableServerLobbyTechtreeCRCCheck","false") == false) {
if(gameSettings->getTech() != "") {
// Check if client has different data, if so force a CRC refresh
// Check if we have calculated the crc since menu_state started
bool forceRefresh = false;
if(checkNetworkPlayerDataSynch(false,false,true) == false &&
last_Forced_CheckedCRCTechtreeName != gameSettings->getTech()) {
lastCheckedCRCTechtreeName = "";
forceRefresh = true;
last_Forced_CheckedCRCTechtreeName = gameSettings->getTech();
}
time_t lastUpdateDate = getFolderTreeContentsCheckSumRecursivelyLastGenerated(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml");
if(difftime(lastUpdateDate,initTime) <0 ) {
forceRefresh=true;
}
if(lastCheckedCRCTechtreeName != gameSettings->getTech()) {
//console.addLine("Checking techtree CRC [" + gameSettings->getTech() + "]");
lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL,forceRefresh);
if(lastCheckedCRCTechtreeValue == 0) {
lastCheckedCRCTechtreeValue = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/*", ".xml", NULL, true);
}
reloadFactions(true,(checkBoxScenario.getValue() == true ? scenarioFiles[listBoxScenario.getSelectedItemIndex()] : ""));
factionCRCList.clear();
@ -3986,10 +3973,7 @@ void MenuStateCustomGame::copyToGameSettings(GameSettings *gameSettings,bool for
if(factionName != GameConstants::RANDOMFACTION_SLOTNAME &&
factionName != GameConstants::OBSERVER_SLOTNAME) {
//factionCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/factions/" + factionName + "/*", ".xml", NULL, true);
uint32 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);
}
uint32 factionCRC = getFolderTreeContentsCheckSumRecursively(config.getPathListForType(ptTechs,""), "/" + gameSettings->getTech() + "/factions/" + factionName + "/*", ".xml", NULL,forceRefresh);
factionCRCList.push_back(make_pair(factionName,factionCRC));
}
}
@ -4003,15 +3987,6 @@ void MenuStateCustomGame::copyToGameSettings(GameSettings *gameSettings,bool for
}
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 = "";
//forceRefresh = true;
last_Forced_CheckedCRCMapName = gameSettings->getMap();
}
if(lastCheckedCRCMapName != gameSettings->getMap()) {
Checksum checksum;
string file = Config::getMapPath(gameSettings->getMap(),"",false);

View File

@ -212,9 +212,7 @@ private:
string lastCheckedCRCTechtreeName;
string lastCheckedCRCMapName;
string last_Forced_CheckedCRCTilesetName;
string last_Forced_CheckedCRCTechtreeName;
string last_Forced_CheckedCRCMapName;
time_t initTime;
uint32 lastCheckedCRCTilesetValue;
uint32 lastCheckedCRCTechtreeValue;