LUADOC - Farming Simulator 19

FieldUtil

Description
Util for field jobs
Functions

getFruitArea

Description
Returns amount of fruit to work is in given area
Definition
getFruitArea(float startWorldX, float startWorldZ, float widthWorldX, float widthWorldZ, float heightWorldX, float heightWorldZ, table terrainDetailRequiredValueRanges, table terrainDetailProhibitValueRanges, integer requiredfruittype, integer requiredMinGrowthState, integer requiredMaxGrowthState, integer prohibitedFruitType, integer prohibitedMinGrowthState, integer prohibitedMaxGrowthState, boolean useWindrowed)
Arguments
floatstartWorldXstart world x
floatstartWorldZstart world z
floatwidthWorldXwidth world x
floatwidthWorldZwidth world z
floatheightWorldXheight world x
floatheightWorldZheight world z
tableterrainDetailRequiredValueRangesterrain detail required value ranges
tableterrainDetailProhibitValueRangesterrain detail prohibit value ranges
integerrequiredfruittyperequired fruit type
integerrequiredMinGrowthStaterequired min growth state
integerrequiredMaxGrowthStaterequired max growth state
integerprohibitedFruitTypeprohibited fruit type
integerprohibitedMinGrowthStateprohibited min growth state
integerprohibitedMaxGrowthStateprohibited max growth state
booleanuseWindroweduse windrow
Return Values
floatareaarea found
floattotalAreatotal area checked
Code
341function FieldUtil.getFruitArea(startWorldX, startWorldZ, widthWorldX, widthWorldZ, heightWorldX, heightWorldZ, terrainDetailRequiredValueRanges, terrainDetailProhibitValueRanges, requiredFruitType, requiredMinGrowthState, requiredMaxGrowthState, prohibitedFruitType, prohibitedMinGrowthState, prohibitedMaxGrowthState, useWindrowed)
342 local query = g_currentMission.fieldCropsQuery
343
344 if requiredFruitType ~= FruitType.UNKNOWN then
345 local ids = g_currentMission.fruits[requiredFruitType]
346 if ids ~= nil and ids.id ~= 0 then
347 if useWindrowed then
348 return 0, 1
349 end
350 local desc = g_fruitTypeManager:getFruitTypeByIndex(requiredFruitType)
351 query:addRequiredCropType(ids.id, requiredMinGrowthState+1, requiredMaxGrowthState+1, desc.startStateChannel, desc.numStateChannels, g_currentMission.terrainDetailTypeFirstChannel, g_currentMission.terrainDetailTypeNumChannels)
352 end
353 end
354
355 if prohibitedFruitType ~= FruitType.UNKNOWN then
356 local ids = g_currentMission.fruits[prohibitedFruitType]
357 if ids ~= nil and ids.id ~= 0 then
358 local desc = g_fruitTypeManager:getFruitTypeByIndex(prohibitedFruitType)
359 query:addProhibitedCropType(ids.id, prohibitedMinGrowthState+1, prohibitedMaxGrowthState+1, desc.startStateChannel, desc.numStateChannels, g_currentMission.terrainDetailTypeFirstChannel, g_currentMission.terrainDetailTypeNumChannels)
360 end
361 end
362
363 for _,valueRange in pairs(terrainDetailRequiredValueRanges) do
364 query:addRequiredGroundValue(valueRange[1], valueRange[2], valueRange[3], valueRange[4])
365 end
366 for _,valueRange in pairs(terrainDetailProhibitValueRanges) do
367 query:addProhibitedGroundValue(valueRange[1], valueRange[2], valueRange[3], valueRange[4])
368 end
369 local x,z, widthX,widthZ, heightX,heightZ = MathUtil.getXZWidthAndHeight(startWorldX, startWorldZ, widthWorldX, widthWorldZ, heightWorldX, heightWorldZ)
370 return query:getParallelogram(x,z, widthX,widthZ, heightX,heightZ, true)
371end