Ticket #4247: AI-maps-savegame.patch
File AI-maps-savegame.patch, 2.4 KB (added by , 8 years ago) |
---|
-
source/simulation2/components/CCmpAIManager.cpp
508 508 m_GameState = gameState; 509 509 } 510 510 511 void UpdatePathfinder(const Grid<NavcellData>& passabilityMap, bool globallyDirty, const Grid<u8>& dirtinessGrid, 511 void UpdatePathfinder(const Grid<NavcellData>& passabilityMap, bool globallyDirty, const Grid<u8>& dirtinessGrid, bool justDeserialized, 512 512 const std::map<std::string, pass_class_t>& nonPathfindingPassClassMasks, const std::map<std::string, pass_class_t>& pathfindingPassClassMasks) 513 513 { 514 514 ENSURE(m_CommandsComputed); … … 521 521 m_LongPathfinder.Update(&m_PassabilityMap, dirtinessGrid); 522 522 523 523 JSContext* cx = m_ScriptInterface->GetContext(); 524 if (dimensionChange )524 if (dimensionChange || justDeserialized) 525 525 ScriptInterface::ToJSVal(cx, &m_PassabilityMapVal, m_PassabilityMap); 526 526 else 527 527 { … … 1108 1108 { 1109 1109 GridUpdateInformation dirtinessInformations = cmpPathfinder->GetDirtinessData(); 1110 1110 1111 if (dirtinessInformations.dirty )1111 if (dirtinessInformations.dirty || m_JustDeserialized) 1112 1112 { 1113 1113 const Grid<NavcellData>& passabilityMap = cmpPathfinder->GetPassabilityGrid(); 1114 1114 … … 1115 1115 std::map<std::string, pass_class_t> nonPathfindingPassClassMasks, pathfindingPassClassMasks; 1116 1116 cmpPathfinder->GetPassabilityClasses(nonPathfindingPassClassMasks, pathfindingPassClassMasks); 1117 1117 1118 m_Worker.UpdatePathfinder(passabilityMap, dirtinessInformations.globallyDirty, dirtinessInformations.dirtinessGrid, 1118 m_Worker.UpdatePathfinder(passabilityMap, 1119 dirtinessInformations.globallyDirty, dirtinessInformations.dirtinessGrid, m_JustDeserialized, 1119 1120 nonPathfindingPassClassMasks, pathfindingPassClassMasks); 1120 1121 } 1121 1122 } … … 1123 1124 // Update the territory data 1124 1125 // Since getting the territory grid can trigger a recalculation, we check NeedUpdate first 1125 1126 CmpPtr<ICmpTerritoryManager> cmpTerritoryManager(GetSystemEntity()); 1126 if (cmpTerritoryManager && cmpTerritoryManager->NeedUpdate(&m_TerritoriesDirtyID))1127 if (cmpTerritoryManager && (cmpTerritoryManager->NeedUpdate(&m_TerritoriesDirtyID) || m_JustDeserialized)) 1127 1128 { 1128 1129 const Grid<u8>& territoryMap = cmpTerritoryManager->GetTerritoryGrid(); 1129 1130 m_Worker.UpdateTerritoryMap(territoryMap);