diff --git a/FS25_ADSmartPickup/adCpBridge.lua b/FS25_ADSmartPickup/adCpBridge.lua index 77b96f6..aa61780 100644 --- a/FS25_ADSmartPickup/adCpBridge.lua +++ b/FS25_ADSmartPickup/adCpBridge.lua @@ -481,6 +481,19 @@ function ADCpBridge.vineOffsetFor(fruitName, role) return -1 end +-- Vinrækker der springes over: sprøjter/spredere arbejder på begge sider af gangen på én gang, så de kører kun +-- i hver anden gang (1). Andre redskaber (harve, mulcher) arbejder mod én side (0). nil = ikke en vinmark. +ADCpBridge.VINE_BOTH_SIDES = {fertilizer = true, weeder = true, limer = true} +function ADCpBridge.vineSkipFor(fruitName, role) + if ADCpBridge.vineOffsetFor(fruitName, role) == nil then return nil end + return ADCpBridge.VINE_BOTH_SIDES[role] and 1 or 0 +end + +function ADCpBridge.setVineSkip(vehicle, value) + if vehicle == nil or vehicle.getCpVineSettings == nil or value == nil then return false end + return (pcall(function() vehicle:getCpVineSettings().vineRowsToSkip:setValue(value) end)) +end + function ADCpBridge.setVineOffset(vehicle, value) if vehicle == nil or vehicle.getCpVineSettings == nil or value == nil then return false end return (pcall(function() vehicle:getCpVineSettings().vineCenterOffset:setValue(value) end)) diff --git a/FS25_ADSmartPickup/adFieldWork.lua b/FS25_ADSmartPickup/adFieldWork.lua index 4e7e52e..19a8a70 100644 --- a/FS25_ADSmartPickup/adFieldWork.lua +++ b/FS25_ADSmartPickup/adFieldWork.lua @@ -639,7 +639,9 @@ local function beginWork(adEnv, field, info, assignment) -- vinmark: kurset i gangen (ikke på vinen), ellers kører maskinen ind i stolperne local vineOffset = ADCpBridge.vineOffsetFor(info.fruitName, assignment.role) if vineOffset ~= nil and ADCpBridge.setVineOffset(vehicle, vineOffset) then - log(field.id, "vinmark: Courseplay-kurset lægges %s", vineOffset == 0 and "på vinen (høster)" or "til venstre for vinen (i gangen)") + local skip = ADCpBridge.vineSkipFor(info.fruitName, assignment.role) or 0 + ADCpBridge.setVineSkip(vehicle, skip) + log(field.id, "vinmark: Courseplay-kurset lægges %s, springer %d række(r) over", vineOffset == 0 and "på vinen (høster)" or "til venstre for vinen (i gangen)", skip) end local opts, source = courseOptions(adEnv, field, assignment) if opts == nil then diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 18e998d..646a168 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.33.0.0 + 1.33.1.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adCpBridge.lua b/tests/test_adCpBridge.lua index 3600ca7..509ad31 100644 --- a/tests/test_adCpBridge.lua +++ b/tests/test_adCpBridge.lua @@ -94,6 +94,11 @@ check("VN harve på druer = venstre", ADCpBridge.vineOffsetFor("grape", "cultiva check("VN høster på druer = på vinen", ADCpBridge.vineOffsetFor("GRAPEB", "harvester"), 0) check("VN hvede røres ikke", ADCpBridge.vineOffsetFor("WHEAT", "fertilizer"), nil) check("VN ukendt afgrøde", ADCpBridge.vineOffsetFor(nil, "weeder"), nil) +check("VN sprøjte springer 1 række over (begge sider)", ADCpBridge.vineSkipFor("GRAPEB", "weeder"), 1) +check("VN gødning springer 1 over", ADCpBridge.vineSkipFor("GRAPEB", "fertilizer"), 1) +check("VN harve springer ingen over", ADCpBridge.vineSkipFor("GRAPEB", "cultivator"), 0) +check("VN høster springer ingen over", ADCpBridge.vineSkipFor("GRAPEB", "harvester"), 0) +check("VN hvede røres ikke", ADCpBridge.vineSkipFor("WHEAT", "weeder"), nil) -- HF: høsterens afgrøder fra skærebordet (liste eller opslag); finsnitter tager ingen local list = ADCpBridge.harvestFruitSet({fruitTypes = {3, 5}})