From be42a8c58b1c49e88f394cbe70bee41bce6c12eb Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Thu, 15 Aug 2024 16:03:00 +0000 Subject: [PATCH] Try to fix saving of corrupted random maps --- lib/gameState/CGameState.cpp | 44 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/lib/gameState/CGameState.cpp b/lib/gameState/CGameState.cpp index f0d4aa938..8353be1c7 100644 --- a/lib/gameState/CGameState.cpp +++ b/lib/gameState/CGameState.cpp @@ -312,6 +312,28 @@ void CGameState::initNewGame(const IMapService * mapService, bool allowSavingRan std::unique_ptr randomMap = mapGenerator.generate(); progressTracking.exclude(mapGenerator); + map = randomMap.release(); + // Update starting options + for(int i = 0; i < map->players.size(); ++i) + { + const auto & playerInfo = map->players[i]; + if(playerInfo.canAnyonePlay()) + { + PlayerSettings & playerSettings = scenarioOps->playerInfos[PlayerColor(i)]; + playerSettings.compOnly = !playerInfo.canHumanPlay; + playerSettings.castle = playerInfo.defaultCastle(); + if(playerSettings.isControlledByAI() && playerSettings.name.empty()) + { + playerSettings.name = VLC->generaltexth->allTexts[468]; + } + playerSettings.color = PlayerColor(i); + } + else + { + scenarioOps->playerInfos.erase(PlayerColor(i)); + } + } + if(allowSavingRandomMap) { try @@ -341,28 +363,6 @@ void CGameState::initNewGame(const IMapService * mapService, bool allowSavingRan } } - map = randomMap.release(); - // Update starting options - for(int i = 0; i < map->players.size(); ++i) - { - const auto & playerInfo = map->players[i]; - if(playerInfo.canAnyonePlay()) - { - PlayerSettings & playerSettings = scenarioOps->playerInfos[PlayerColor(i)]; - playerSettings.compOnly = !playerInfo.canHumanPlay; - playerSettings.castle = playerInfo.defaultCastle(); - if(playerSettings.isControlledByAI() && playerSettings.name.empty()) - { - playerSettings.name = VLC->generaltexth->allTexts[468]; - } - playerSettings.color = PlayerColor(i); - } - else - { - scenarioOps->playerInfos.erase(PlayerColor(i)); - } - } - logGlobal->info("Generated random map in %i ms.", sw.getDiff()); } else