feat(kæde): marker kan markeres fri til kæden; målafgrødens kilde huskes

This commit is contained in:
2026-09-30 13:32:48 +02:00
parent 217498aefa
commit 6dd1b5cac0
6 changed files with 18 additions and 4 deletions
+4 -1
View File
@@ -146,7 +146,7 @@ end
local PLAN_VALUES = { local PLAN_VALUES = {
targetFruit = true, sow = true, rake = true, mulch = true, lime = true, roll = true, targetFruit = true, sow = true, rake = true, mulch = true, lime = true, roll = true,
fertilize = true, weed = true, straw = true, soil = true, rigs = true, unloaders = true, fertilize = true, weed = true, straw = true, chainFree = true, soil = true, rigs = true, unloaders = true,
} }
function ADFieldGuide.choose(guide, id, value) function ADFieldGuide.choose(guide, id, value)
@@ -206,6 +206,7 @@ local function rowsCrop(guide)
if target(guide.draft) == "" and info(guide).kind ~= "mowable" then if target(guide.draft) == "" and info(guide).kind ~= "mowable" then
table.insert(rows, toggle("sow", L("spu_guide_crop_sowAgain"), plan.sow)) table.insert(rows, toggle("sow", L("spu_guide_crop_sowAgain"), plan.sow))
end end
table.insert(rows, toggle("chainFree", L("spu_field_chainFree"), plan.chainFree))
return rows return rows
end end
@@ -442,6 +443,8 @@ end
function ADFieldGuide.result(guide, start) function ADFieldGuide.result(guide, start)
local draft = guide.draft local draft = guide.draft
local plan = ADGuide.deepCopy(draft.plan) local plan = ADGuide.deepCopy(draft.plan)
-- kilden ejes af setTarget; kladdens gamle værdi må ikke overskrive den
plan.targetSource = nil
local t = plan.targetFruit or "" local t = plan.targetFruit or ""
if t ~= "" then if t ~= "" then
plan.mode = "auto" plan.mode = "auto"
+2 -2
View File
@@ -309,8 +309,8 @@ function ADFieldJobs.forceReady(id)
ADFieldJobs.setField(ADFieldModel.forceReady(ADFieldJobs.getField(id))) ADFieldJobs.setField(ADFieldModel.forceReady(ADFieldJobs.getField(id)))
end end
function ADFieldJobs.setTarget(id, fruitName) function ADFieldJobs.setTarget(id, fruitName, source)
ADFieldJobs.setField(ADFieldModel.setTarget(ADFieldJobs.getField(id), fruitName)) ADFieldJobs.setField(ADFieldModel.setTarget(ADFieldJobs.getField(id), fruitName, source))
ADFieldJobs.log(id, "mål-afgrøde: %s", fruitName ~= "" and fruitName or "ingen") ADFieldJobs.log(id, "mål-afgrøde: %s", fruitName ~= "" and fruitName or "ingen")
ADFieldJobs.save() ADFieldJobs.save()
end end
+9 -1
View File
@@ -43,6 +43,8 @@ local DEFAULT_PLAN = {
mode = "manual", product = "auto", rake = false, rigs = 1, unloaders = 1, mode = "manual", product = "auto", rake = false, rigs = 1, unloaders = 1,
mulch = false, lime = true, soil = "auto", sow = false, sowFruit = "", roll = false, mulch = false, lime = true, soil = "auto", sow = false, sowFruit = "", roll = false,
fertilize = true, weed = true, targetFruit = "", prepAfterMow = false, straw = "chop", fertilize = true, weed = true, targetFruit = "", prepAfterMow = false, straw = "chop",
-- kæde: marken er frigivet til produktionskæden; hvem der valgte målafgrøden ("user"|"chain"|"")
chainFree = false, targetSource = "",
} }
local STRAW_VALUES = {chop = true, collect = true, bale = true} local STRAW_VALUES = {chop = true, collect = true, bale = true}
-- halm-trin efter høst (mejetærskeren lægger skår når halmen skal bruges) -- halm-trin efter høst (mejetærskeren lægger skår når halmen skal bruges)
@@ -158,9 +160,11 @@ end
-- Vælg mål-afgrøde fra menuen ("" = ingen). Med mål kører marken automatisk; en færdig/klar mark sættes -- Vælg mål-afgrøde fra menuen ("" = ingen). Med mål kører marken automatisk; en færdig/klar mark sættes
-- til venter, så den kan starte forfra. Uden mål: tilbage til manuel. -- til venter, så den kan starte forfra. Uden mål: tilbage til manuel.
function ADFieldModel.setTarget(field, fruitName) function ADFieldModel.setTarget(field, fruitName, source)
local copy = copyField(field) local copy = copyField(field)
copy.plan.targetFruit = fruitName or "" copy.plan.targetFruit = fruitName or ""
-- kilden huskes kun mens der er et mål; standard er at spilleren valgte det
copy.plan.targetSource = copy.plan.targetFruit ~= "" and (source or "user") or ""
copy.held = nil copy.held = nil
copy.plan.mode = copy.plan.targetFruit ~= "" and "auto" or "manual" copy.plan.mode = copy.plan.targetFruit ~= "" and "auto" or "manual"
if not ADFieldModel.isWorking(field) and field.stage == "done" then if not ADFieldModel.isWorking(field) and field.stage == "done" then
@@ -463,6 +467,7 @@ function ADFieldModel.toRecord(field)
soil = plan.soil, sow = flag(plan.sow), sowFruit = plan.sowFruit or "", roll = flag(plan.roll), soil = plan.soil, sow = flag(plan.sow), sowFruit = plan.sowFruit or "", roll = flag(plan.roll),
fertilize = flag(plan.fertilize), weed = flag(plan.weed), fertilize = flag(plan.fertilize), weed = flag(plan.weed),
targetFruit = plan.targetFruit or "", prepAfterMow = flag(plan.prepAfterMow), straw = plan.straw or "chop", targetFruit = plan.targetFruit or "", prepAfterMow = flag(plan.prepAfterMow), straw = plan.straw or "chop",
chainFree = flag(plan.chainFree), targetSource = plan.targetSource or "",
kind = field.kind or "", lastFruit = field.lastFruit or "", care = table.concat(care, " "), kind = field.kind or "", lastFruit = field.lastFruit or "", care = table.concat(care, " "),
mowWidth = field.mowWidth or 0, mowWidth = field.mowWidth or 0,
mowVehicle = field.mowVehicleId or "", mowVehicle = field.mowVehicleId or "",
@@ -503,6 +508,9 @@ function ADFieldModel.fromRecord(record)
plan.weed = readFlag(record.weed, true) plan.weed = readFlag(record.weed, true)
plan.targetFruit = record.targetFruit or "" plan.targetFruit = record.targetFruit or ""
plan.prepAfterMow = readFlag(record.prepAfterMow, false) plan.prepAfterMow = readFlag(record.prepAfterMow, false)
plan.chainFree = readFlag(record.chainFree, false)
-- gamle saves: et eksisterende mål er valgt af spilleren
plan.targetSource = record.targetSource or (plan.targetFruit ~= "" and "user" or "")
plan.straw = STRAW_VALUES[record.straw] and record.straw or "chop" plan.straw = STRAW_VALUES[record.straw] and record.straw or "chop"
field.kind = readText(record.kind) field.kind = readText(record.kind)
field.lastFruit = readText(record.lastFruit) field.lastFruit = readText(record.lastFruit)
+1
View File
@@ -12,6 +12,7 @@ ADFieldStorage.FIELD_TYPES = {
rigs = "Int", unloaders = "Int", mulch = "Int", lime = "Int", soil = "String", sow = "Int", rigs = "Int", unloaders = "Int", mulch = "Int", lime = "Int", soil = "String", sow = "Int",
sowFruit = "String", roll = "Int", fertilize = "Int", weed = "Int", sowFruit = "String", roll = "Int", fertilize = "Int", weed = "Int",
kind = "String", lastFruit = "String", care = "String", targetFruit = "String", prepAfterMow = "Int", straw = "String", kind = "String", lastFruit = "String", care = "String", targetFruit = "String", prepAfterMow = "Int", straw = "String",
chainFree = "Int", targetSource = "String",
mowWidth = "Float", mowVehicle = "String", rakeVehicle = "String", harvestVehicle = "String", windrowOffset = "String", mowWidth = "Float", mowVehicle = "String", rakeVehicle = "String", harvestVehicle = "String", windrowOffset = "String",
dedicated = "String", dedicated = "String",
} }
+1
View File
@@ -167,6 +167,7 @@
<text name="spu_field_careNeed" text="trænger til %s"/> <text name="spu_field_careNeed" text="trænger til %s"/>
<text name="spu_field_fertilize" text="Gød op til max (når afgrøden vokser)"/> <text name="spu_field_fertilize" text="Gød op til max (når afgrøden vokser)"/>
<text name="spu_field_lime" text="Kalk når jorden trænger"/> <text name="spu_field_lime" text="Kalk når jorden trænger"/>
<text name="spu_field_chainFree" text="Fri til kæden (moden må skifte afgrøde)"/>
<text name="spu_field_mulch" text="Stubbehakning efter høst"/> <text name="spu_field_mulch" text="Stubbehakning efter høst"/>
<text name="spu_field_need_fert" text="gødning"/> <text name="spu_field_need_fert" text="gødning"/>
<text name="spu_field_need_lime" text="kalk"/> <text name="spu_field_need_lime" text="kalk"/>
+1
View File
@@ -167,6 +167,7 @@
<text name="spu_field_careNeed" text="needs %s"/> <text name="spu_field_careNeed" text="needs %s"/>
<text name="spu_field_fertilize" text="Fertilize to max (while the crop grows)"/> <text name="spu_field_fertilize" text="Fertilize to max (while the crop grows)"/>
<text name="spu_field_lime" text="Lime when the soil needs it"/> <text name="spu_field_lime" text="Lime when the soil needs it"/>
<text name="spu_field_chainFree" text="Free for chains (mod may change the crop)"/>
<text name="spu_field_mulch" text="Mulch stubble after harvest"/> <text name="spu_field_mulch" text="Mulch stubble after harvest"/>
<text name="spu_field_need_fert" text="fertilizer"/> <text name="spu_field_need_fert" text="fertilizer"/>
<text name="spu_field_need_lime" text="lime"/> <text name="spu_field_need_lime" text="lime"/>