Ticket #3378: 3378_v1.patch

File 3378_v1.patch, 1.2 KB (added by s0600204, 9 years ago)

Proposed fix.

  • source/simulation2/components/CCmpTerritoryManager.cpp

     
    389389
    390390    // Reset territory counts for all players
    391391    CmpPtr<ICmpPlayerManager> cmpPlayerManager(GetSystemEntity());
    392     if (cmpPlayerManager && cmpPlayerManager->GetNumPlayers() != m_TerritoryCellCounts.size())
     392    if (cmpPlayerManager && (size_t)cmpPlayerManager->GetNumPlayers() != m_TerritoryCellCounts.size())
    393393        m_TerritoryCellCounts.resize(cmpPlayerManager->GetNumPlayers());
    394394    for (u16& count : m_TerritoryCellCounts)
    395395        count = 0;
     
    535535    if (player <= 0 && (size_t)player > m_TerritoryCellCounts.size())
    536536        return 0;
    537537
     538    // This is to prevent a problem with rejoining players, where this
     539    // function was being called before territories had been recalculated
     540    if (m_TerritoryTotalPassableCellCount <= 0)
     541        CalculateTerritories();
    538542    ENSURE(m_TerritoryTotalPassableCellCount > 0);
     543
    539544    u8 percentage = (m_TerritoryCellCounts[player] * 100) / m_TerritoryTotalPassableCellCount;
    540545    ENSURE(percentage <= 100);
    541546    return percentage;