feat(markarbejde): bar mark med mål-afgrøde klargøres straks uanset årstid — kun såningen venter på såtiden (v1.48.1.0)
This commit is contained in:
@@ -152,10 +152,9 @@ function ADFieldJobs.decide(field, info, assignments, now, env)
|
|||||||
end
|
end
|
||||||
return {action = "start"}
|
return {action = "start"}
|
||||||
end
|
end
|
||||||
-- mål-afgrøde på en bar mark: klargør og så så snart målet kan sås
|
-- mål-afgrøde på en bar mark: klargør straks; såningen venter selv på såtiden
|
||||||
if info ~= nil and info.kind == "bare" and field.plan.targetFruit ~= nil and field.plan.targetFruit ~= "" then
|
if info ~= nil and info.kind == "bare" and field.plan.targetFruit ~= nil and field.plan.targetFruit ~= "" then
|
||||||
local plantable = env ~= nil and env.plantable ~= nil and env.plantable(field.plan.targetFruit) or false
|
if ADFieldModel.shouldStartBare(field, "bare") then
|
||||||
if ADFieldModel.shouldStartBare(field, "bare", plantable) then
|
|
||||||
if not hasMarker then return {action = "wait"} end
|
if not hasMarker then return {action = "wait"} end
|
||||||
return {action = "start"}
|
return {action = "start"}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -166,12 +166,13 @@ function ADFieldModel.setTarget(field, fruitName)
|
|||||||
return copy
|
return copy
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Bar mark med mål-afgrøde starter selv klargøring + såning, når målet kan sås nu.
|
-- Bar mark med mål-afgrøde starter selv klargøring + såning med det samme: klargøringen (kalk, plov,
|
||||||
function ADFieldModel.shouldStartBare(field, kind, plantableNow)
|
-- kultivator) kører uanset årstid, og kun såningen venter på såtiden (preflight: notPlantable). Med mange
|
||||||
|
-- marker nås det ellers ikke inden såvinduet lukker (brugerønske 28/9).
|
||||||
|
function ADFieldModel.shouldStartBare(field, kind)
|
||||||
if field.plan.targetFruit == nil or field.plan.targetFruit == "" then return false end
|
if field.plan.targetFruit == nil or field.plan.targetFruit == "" then return false end
|
||||||
-- kun fra idle: efter egen såning står marken "done" (nysået kan læses som bar) — ingen dobbelt-såning
|
-- kun fra idle: efter egen såning står marken "done" (nysået kan læses som bar) — ingen dobbelt-såning
|
||||||
if kind ~= "bare" or field.stage ~= "idle" then return false end
|
return kind == "bare" and field.stage == "idle"
|
||||||
return plantableNow == true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Krævet bredde for et sæt: kun læssevognen uden riv skal dække slåmaskinens baner (halmskår ligger i
|
-- Krævet bredde for et sæt: kun læssevognen uden riv skal dække slåmaskinens baner (halmskår ligger i
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<modDesc descVersion="107">
|
<modDesc descVersion="107">
|
||||||
<author>masterdraco</author>
|
<author>masterdraco</author>
|
||||||
<version>1.48.0.0</version>
|
<version>1.48.1.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
|
|||||||
@@ -92,12 +92,12 @@ local hayCollect = M.with(silageCollect, {plan = {product = "hay"}})
|
|||||||
check("J11 hø-opsamling venter", J.decide(hayCollect, info, {}, 0, rain).reason, "rain")
|
check("J11 hø-opsamling venter", J.decide(hayCollect, info, {}, 0, rain).reason, "rain")
|
||||||
check("J11 tørvejr", J.decide(mowing, info, {}, 0, {raining = false}).action, "dispatch")
|
check("J11 tørvejr", J.decide(mowing, info, {}, 0, {raining = false}).action, "dispatch")
|
||||||
|
|
||||||
-- J12: bar mark med mål-afgrøde starter selv når målet kan sås; ellers venter den
|
-- J12: bar mark med mål-afgrøde klargøres straks — kun selve såningen venter på såtiden
|
||||||
local bareInfo = {id = 90, markerId = 9, kind = "bare", readyRatio = 0, needs = {}}
|
local bareInfo = {id = 90, markerId = 9, kind = "bare", readyRatio = 0, needs = {}}
|
||||||
local bareTarget = M.with(M.newField(90), {plan = {targetFruit = "WHEAT", mode = "auto"}})
|
local bareTarget = M.with(M.newField(90), {plan = {targetFruit = "WHEAT", mode = "auto"}})
|
||||||
local canSow = {plantable = function(name) return name == "WHEAT" end}
|
local canSow = {plantable = function(name) return name == "WHEAT" end}
|
||||||
check("J12 bar + såtid -> start", J.decide(bareTarget, bareInfo, {}, 0, canSow).action, "start")
|
check("J12 bar + såtid -> start", J.decide(bareTarget, bareInfo, {}, 0, canSow).action, "start")
|
||||||
check("J12 bar + ikke såtid -> intet", J.decide(bareTarget, bareInfo, {}, 0, {plantable = function() return false end}).action, "none")
|
check("J12 bar + ikke såtid -> start alligevel (klargøring)", J.decide(bareTarget, bareInfo, {}, 0, {plantable = function() return false end}).action, "start")
|
||||||
check("J12 bar uden markør -> vent", J.decide(bareTarget, {id = 90, kind = "bare"}, {}, 0, canSow).action, "wait")
|
check("J12 bar uden markør -> vent", J.decide(bareTarget, {id = 90, kind = "bare"}, {}, 0, canSow).action, "wait")
|
||||||
check("J12 voksende mark med mål -> lad den vokse", J.decide(bareTarget, {id = 90, markerId = 9, kind = "harvest", growing = true, readyRatio = 0.3}, {}, 0, canSow).action, "none")
|
check("J12 voksende mark med mål -> lad den vokse", J.decide(bareTarget, {id = 90, markerId = 9, kind = "harvest", growing = true, readyRatio = 0.3}, {}, 0, canSow).action, "none")
|
||||||
|
|
||||||
|
|||||||
@@ -263,9 +263,9 @@ check("M19 start anvender målet", started.plan.sowFruit, "WHEAT")
|
|||||||
check("M19 start: høst først", started.stage, "harvesting")
|
check("M19 start: høst først", started.stage, "harvesting")
|
||||||
check("M19 målet gemmes", M.fromRecord(M.toRecord(started)).plan.targetFruit, "WHEAT")
|
check("M19 målet gemmes", M.fromRecord(M.toRecord(started)).plan.targetFruit, "WHEAT")
|
||||||
check("M19 klargøring efter slåning gemmes", M.fromRecord(M.toRecord(M.start(target, "mowable", {}, "GRASS"))).plan.prepAfterMow, true)
|
check("M19 klargøring efter slåning gemmes", M.fromRecord(M.toRecord(M.start(target, "mowable", {}, "GRASS"))).plan.prepAfterMow, true)
|
||||||
-- M20: skal en bar mark med mål starte? (kun når målafgrøden kan sås nu)
|
-- M20: skal en bar mark med mål starte? (altid — kun såningen venter på såtiden)
|
||||||
check("M20 bar + sås nu -> start", M.shouldStartBare(target, "bare", true), true)
|
check("M20 bar + sås nu -> start", M.shouldStartBare(target, "bare", true), true)
|
||||||
check("M20 bar + ikke såtid -> vent", M.shouldStartBare(target, "bare", false), false)
|
check("M20 bar + ikke såtid -> klargør alligevel (kun såningen venter)", M.shouldStartBare(target, "bare"), true)
|
||||||
check("M20 uden mål -> ingen auto-start", M.shouldStartBare(M.newField(83), "bare", true), false)
|
check("M20 uden mål -> ingen auto-start", M.shouldStartBare(M.newField(83), "bare", true), false)
|
||||||
check("M20 voksende mark -> nej", M.shouldStartBare(target, "harvest", true), false)
|
check("M20 voksende mark -> nej", M.shouldStartBare(target, "harvest", true), false)
|
||||||
check("M20 arbejdende mark -> nej", M.shouldStartBare(started, "bare", true), false)
|
check("M20 arbejdende mark -> nej", M.shouldStartBare(started, "bare", true), false)
|
||||||
|
|||||||
Reference in New Issue
Block a user