Ticket #4247: AI-maps-savegame.patch

File AI-maps-savegame.patch, 2.4 KB (added by Itms, 8 years ago)
  • source/simulation2/components/CCmpAIManager.cpp

     
    508508        m_GameState = gameState;
    509509    }
    510510
    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,
    512512        const std::map<std::string, pass_class_t>& nonPathfindingPassClassMasks, const std::map<std::string, pass_class_t>& pathfindingPassClassMasks)
    513513    {
    514514        ENSURE(m_CommandsComputed);
     
    521521            m_LongPathfinder.Update(&m_PassabilityMap, dirtinessGrid);
    522522
    523523        JSContext* cx = m_ScriptInterface->GetContext();
    524         if (dimensionChange)
     524        if (dimensionChange || justDeserialized)
    525525            ScriptInterface::ToJSVal(cx, &m_PassabilityMapVal, m_PassabilityMap);
    526526        else
    527527        {
     
    11081108        {
    11091109            GridUpdateInformation dirtinessInformations = cmpPathfinder->GetDirtinessData();
    11101110
    1111             if (dirtinessInformations.dirty)
     1111            if (dirtinessInformations.dirty || m_JustDeserialized)
    11121112            {
    11131113                const Grid<NavcellData>& passabilityMap = cmpPathfinder->GetPassabilityGrid();
    11141114
     
    11151115                std::map<std::string, pass_class_t> nonPathfindingPassClassMasks, pathfindingPassClassMasks;
    11161116                cmpPathfinder->GetPassabilityClasses(nonPathfindingPassClassMasks, pathfindingPassClassMasks);
    11171117
    1118                 m_Worker.UpdatePathfinder(passabilityMap, dirtinessInformations.globallyDirty, dirtinessInformations.dirtinessGrid,
     1118                m_Worker.UpdatePathfinder(passabilityMap,
     1119                    dirtinessInformations.globallyDirty, dirtinessInformations.dirtinessGrid, m_JustDeserialized,
    11191120                    nonPathfindingPassClassMasks, pathfindingPassClassMasks);
    11201121            }
    11211122        }
     
    11231124        // Update the territory data
    11241125        // Since getting the territory grid can trigger a recalculation, we check NeedUpdate first
    11251126        CmpPtr<ICmpTerritoryManager> cmpTerritoryManager(GetSystemEntity());
    1126         if (cmpTerritoryManager && cmpTerritoryManager->NeedUpdate(&m_TerritoriesDirtyID))
     1127        if (cmpTerritoryManager && (cmpTerritoryManager->NeedUpdate(&m_TerritoriesDirtyID) || m_JustDeserialized))
    11271128        {
    11281129            const Grid<u8>& territoryMap = cmpTerritoryManager->GetTerritoryGrid();
    11291130            m_Worker.UpdateTerritoryMap(territoryMap);