Code
2783void CvEconomicAI::AssignHutsToExplorers()2784{2785 FFastVector<unsigned int> aiHutIndices;27862787 // Create temporary list of huts2788 for(uint uiGoodyPlots = 0; uiGoodyPlots < m_aiGoodyHutPlots.size(); uiGoodyPlots++)2789 {2790 aiHutIndices.push_back(uiGoodyPlots);2791 }27922793 for(uint uiExplorer = 0; uiExplorer < m_apExplorers.size(); uiExplorer++)2794 {2795 CvUnit* pUnit = m_apExplorers[uiExplorer];2796 uint uiHutIndex = MAX_INT;2797 int iClosestEstimateTurns = MAX_INT;27982799 for(uint uiGoody = 0; uiGoody < aiHutIndices.size(); uiGoody++)2800 {2801 if(m_aiGoodyHutPlots[aiHutIndices[uiGoody]] == -1)2802 {2803 continue;2804 }28052806 CvPlot* pGoodyPlot = GC.getMap().plotByIndex(m_aiGoodyHutPlots[aiHutIndices[uiGoody]]);2807 int iDistance = plotDistance(pUnit->getX(), pUnit->getY(), pGoodyPlot->getX(), pGoodyPlot->getY());28082809 int iEstimateTurns = MAX_INT;2810 if(pUnit->maxMoves() >= 1)2811 {2812 iEstimateTurns = iDistance / (pUnit->maxMoves() / GC.getMOVE_DENOMINATOR());2813 }28142815 if(iEstimateTurns < iClosestEstimateTurns)2816 {2817 // Now check path2818 bool bCanFindPath = GC.getPathFinder().GenerateUnitPath(pUnit, pUnit->getX(), pUnit->getY(), pGoodyPlot->getX(), pGoodyPlot->getY(), MOVE_TERRITORY_NO_ENEMY | MOVE_MAXIMIZE_EXPLORE | MOVE_UNITS_IGNORE_DANGER /*iFlags*/, true/*bReuse*/);2819 if(bCanFindPath)2820 {2821 iClosestEstimateTurns = iEstimateTurns;2822 uiHutIndex = aiHutIndices[uiGoody];2823 }2824 }2825 }28262827 if(uiHutIndex != MAX_INT)2828 {2829 m_aiGoodyHutUnitAssignments[uiHutIndex] = GoodyHutUnitAssignment( pUnit->GetID(), -1);28302831 FFastVector<unsigned int> tempHutIndices = aiHutIndices;2832 aiHutIndices.clear();2833 for(uint uiHut = 0; uiHut < tempHutIndices.size(); uiHut++)2834 {2835 if(tempHutIndices[uiHut] != uiHutIndex)2836 {2837 aiHutIndices.push_back(tempHutIndices[uiHut]);2838 }2839 }2840 }2841 }2842}