feat(marker): mål-afgrøde pr. mark ('vælg mark + afgrøde, glem den') + brug alle ledige maskiner (standard)
This commit is contained in:
@@ -82,5 +82,11 @@ check("FL10 grund", whyMany, "notEnough")
|
||||
check("FL10 ledige/krævet", args[1] .. "/" .. args[2], "2/3")
|
||||
check("FL10 ingen med rollen", select(2, F.pickMany({m1}, "tedder", 1, 0, 0)), "noRig")
|
||||
|
||||
-- FL11: markflådens tilstand: alle ledige maskiner (standard) eller kun med flueben
|
||||
check("FL11 alle: uden flueben med", F.isEnabled("all", {}, "v1"), true)
|
||||
check("FL11 flueben: uden flueben ude", F.isEnabled("ticked", {}, "v1"), false)
|
||||
check("FL11 flueben: med flueben", F.isEnabled("ticked", {v1 = true}, "v1"), true)
|
||||
check("FL11 ukendt tilstand = alle", F.isEnabled(nil, {}, "v1"), true)
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
@@ -89,5 +89,14 @@ local hayCollect = M.with(silageCollect, {plan = {product = "hay"}})
|
||||
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")
|
||||
|
||||
-- J12: bar mark med mål-afgrøde starter selv når målet kan sås; ellers venter den
|
||||
local bareInfo = {id = 90, markerId = 9, kind = "bare", readyRatio = 0, needs = {}}
|
||||
local bareTarget = M.with(M.newField(90), {plan = {targetFruit = "WHEAT", mode = "auto"}})
|
||||
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 + ikke såtid -> intet", J.decide(bareTarget, bareInfo, {}, 0, {plantable = function() return false end}).action, "none")
|
||||
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")
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
@@ -234,5 +234,41 @@ check("M18 uden forespørgsel -> venter", M.onReadiness(M.forceReady(M.newField(
|
||||
check("M18 vejrfølsom: høst", M.isWeatherSensitive("harvesting", {}, "harvest"), true)
|
||||
check("M18 vejrfølsom: kultivering ikke", M.isWeatherSensitive("cultivating", {}, "harvest"), false)
|
||||
|
||||
-- M19: mål-afgrøde — "vælg mark + afgrøde, glem den"
|
||||
local target = M.with(M.newField(80), {plan = {targetFruit = "WHEAT"}})
|
||||
local wheatNow = M.applyTarget(target.plan, "harvest", "BARLEY")
|
||||
check("M19 mål -> auto", wheatNow.mode, "auto")
|
||||
check("M19 høst byg -> så hvede", wheatNow.sow, true)
|
||||
check("M19 såafgrøde = mål", wheatNow.sowFruit, "WHEAT")
|
||||
check("M19 kæde: høst -> kultivér -> så", table.concat(M.workStages(wheatNow, "harvest", {}), ","), "harvesting,cultivating,sowing")
|
||||
local grassToWheat = M.applyTarget(target.plan, "mowable", "GRASS")
|
||||
check("M19 græs -> hvede: slå, saml op, så klargør og så", table.concat(M.workStages(grassToWheat, "mowable", {}), ","), "mowing,collecting,cultivating,sowing")
|
||||
local grassTarget = M.applyTarget(M.with(M.newField(81), {plan = {targetFruit = "GRASS"}}).plan, "mowable", "GRASS")
|
||||
check("M19 græs -> græs: kun slå og saml op", table.concat(M.workStages(grassTarget, "mowable", {}), ","), "mowing,collecting")
|
||||
check("M19 græs -> græs: ingen såning", grassTarget.sow, false)
|
||||
local bareTarget = M.applyTarget(target.plan, "bare", nil)
|
||||
check("M19 bar mark -> klargør og så", table.concat(M.workStages(bareTarget, "bare", {plow = true}), ","), "plowing,sowing")
|
||||
check("M19 uden mål: plan urørt", M.applyTarget(M.newField(82).plan, "harvest", "BARLEY").mode, "manual")
|
||||
local started = M.start(target, "harvest", {}, "BARLEY")
|
||||
check("M19 start anvender målet", started.plan.sowFruit, "WHEAT")
|
||||
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 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)
|
||||
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 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 arbejdende mark -> nej", M.shouldStartBare(started, "bare", true), false)
|
||||
check("M20 færdig (lige sået) -> nej, ingen dobbelt-såning", M.shouldStartBare(M.with(target, {stage = "done"}), "bare", true), false)
|
||||
|
||||
-- M21: vælg mål-afgrøde fra menuen: auto, og en færdig mark nulstilles så den kan starte
|
||||
local chosen = M.setTarget(M.with(M.newField(84), {stage = "done"}), "CANOLA")
|
||||
check("M21 mål sat", chosen.plan.targetFruit, "CANOLA"); check("M21 auto", chosen.plan.mode, "auto")
|
||||
check("M21 færdig -> venter", chosen.stage, "idle")
|
||||
check("M21 arbejdende mark beholder trin", M.setTarget(started, "CANOLA").stage, "harvesting")
|
||||
local cleared = M.setTarget(chosen, "")
|
||||
check("M21 mål fjernet", cleared.plan.targetFruit, ""); check("M21 tilbage til manuel", cleared.plan.mode, "manual")
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
Reference in New Issue
Block a user