341 | function 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) |
371 | end |