-- ImportTileYields
-- Author: 3335d
-- DateCreated: 8/15/2013 2:35:16 PM
--------------------------------------------------------------
include("DistanceFunctions")
function ImportMap()
importMap = {}
for plot, ownerID in ipairs(importMap) do
local pPlot[x, y] = Map.GetPlot( x, y )
local pOwner[x, y] = pPlot[x, y]:GetOwner()
local pOwnerID[x, y] = pOwner[x, y]:GetID()
if pPlot[x, y]:IsCity() then
pCity[x, y] = pPlot[x, y]:GetCity()
else
pCity[x, y] = "NULL"
end
local plotX = pPlot[x, y]:GetX()
local plotY = pPlot[x, y]:GetY()
table.insert( importMap { xxyy = plotX..plotY, plot = pPlot[x, y], ownerID = pOwnerID[x, y], city = pCity[x, y] } )
end
end
function DistanceMap()
distanceMap = {}
for xxyy, city in pairs(importMap) do
for iPlot = 0, #xxyy do
if (importMap[xxyy].plot:IsCity()) and
(importMap[xxyy].plot ~= importMap[iPlot].plot) and
(importMap[xxyy].ownerID == importMap[iPlot].ownerID) then
local pDistance = GetDistanceToPlot ( importMap[xxyy].plot, importMap[iPlot].plot )
local pInvertedDistance = 1 / pDistance
local plotX = importMap[xxyy].plot:GetX()
local plotY = importMap[xxyy].plot:GetY()
table.insert( distanceMap { plot = importMap[iPlot].plot,
cityPlot = importMap[xxyy].plot,
city = importMap[xxyy].city,
distance = pDistance,
invertedDistance = pInvertedDistance
xxyy = plotX..plotY
foodWeight = GetBuildingWeights( importMap[xxyy].city, YIELD_FOOD ) * pInvertedDistance
productionWeight = GetBuildingWeights( importMap[xxyy].city, YIELD_PRODUCTION ) * pInvertedDistance
goldWeight = GetBuildingWeights( importMap[xxyy].city, YIELD_GOLD ) * pInvertedDistance
scienceWeight = GetBuildingWeights( importMap[xxyy].city, YIELD_SCIENCE ) * pInvertedDistance
healthWeight = GetBuildingWeights( importMap[xxyy].city, YIELD_HEALTH ) * pInvertedDistance
faithWeight = GetBuildingWeights( importMap[xxyy].city, YIELD_FAITH ) * pInvertedDistance
happyWeight = GetBuildingWeights( importmap[xxyy].city, YIELD_HAPPY ) * pInvertedDistance
plagueWeight = GetBuildingWeights( importMap[xxyy].city, YIELD_PLAGUE ) * pInvertedDistance
cultureWeight = GetBuildingWeights( importMap[xxyy].city, YIELD_CULTURE ) * pInvertedDistance
} )
end
end
end
invertedDistanceMap = {}
metaDistanceMap = {}
for xxyy, city in pairs(distanceMap) do
for jPlot = 0, #xxyy do
local totalFood = totalFood + distanceMap[jPlot].foodWeight
local totalProduction = totalProduction + distanceMap[jPlot].productionWeight
local totalGold = totalGold + distanceMap[jPlot].productionWeight
local totalScience = totalScience + distanceMap[jPlot].scienceWeight
local totalHealth = totalHealth + distanceMap[jPlot].healthWeight
local totalFaith = totalFaith + distanceMap[jPlot].healthWeight
local totalHappy = totalHappy + distanceMap[jPlot].totalHappy
local totalPlague = totalPlague + distanceMap[jPlot].totalPlague
local totalCulture = totalCulture + distanceMap[jPlot].totalPlague
end
for kPlot = 0, #xxyy do
local percentFood = 1 / totalFood * distanceMap[kPlot].foodWeight
local percentProduction = 1 / totalProduction * distanceMap[kPlot].productionWeight
local percentGold = 1 / totalGold * distanceMap[kPlot].productionWeight
local percentScience = 1 / totalScience * distanceMap[kPlot].scienceWeight
local percentHealth = 1 / totalHealth * distanceMap[kPlot].healthWeight
local percentFaith = 1 / totalFaith * distanceMap[kPlot].healthWeight
local percentHappy = 1 / totalHappy * distanceMap[kPlot].totalHappy
local percentPlague = 1 / totalPlague * distanceMap[kPlot].totalPlague
local percentCulture = 1 / totalCulture * distanceMap[kPlot].totalPlague
table.insert( invertedDistanceMap { foodWeight = percentFood,
productionWeight = percentProduction
goldWeight = percentGold
scienceWeight = percentScience
healthWeight = percentHealth
faithWeight = percentFaith
happyWeight = percentHappy
plagueWeight = percentPlague
cultureWeight = percentCulture
city = distanceMap[xxyy].city
xxyy = distanceMap[city].xxyy
} )
end
end
end