diff --git a/FS25_ADSmartPickup/adFieldGuide.lua b/FS25_ADSmartPickup/adFieldGuide.lua
index 9a88741..4b1efbb 100644
--- a/FS25_ADSmartPickup/adFieldGuide.lua
+++ b/FS25_ADSmartPickup/adFieldGuide.lua
@@ -146,7 +146,7 @@ end
local PLAN_VALUES = {
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)
@@ -206,6 +206,7 @@ local function rowsCrop(guide)
if target(guide.draft) == "" and info(guide).kind ~= "mowable" then
table.insert(rows, toggle("sow", L("spu_guide_crop_sowAgain"), plan.sow))
end
+ table.insert(rows, toggle("chainFree", L("spu_field_chainFree"), plan.chainFree))
return rows
end
@@ -442,6 +443,8 @@ end
function ADFieldGuide.result(guide, start)
local draft = guide.draft
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 ""
if t ~= "" then
plan.mode = "auto"
diff --git a/FS25_ADSmartPickup/adFieldJobs.lua b/FS25_ADSmartPickup/adFieldJobs.lua
index 80301eb..6db2d8f 100644
--- a/FS25_ADSmartPickup/adFieldJobs.lua
+++ b/FS25_ADSmartPickup/adFieldJobs.lua
@@ -309,8 +309,8 @@ function ADFieldJobs.forceReady(id)
ADFieldJobs.setField(ADFieldModel.forceReady(ADFieldJobs.getField(id)))
end
-function ADFieldJobs.setTarget(id, fruitName)
- ADFieldJobs.setField(ADFieldModel.setTarget(ADFieldJobs.getField(id), fruitName))
+function ADFieldJobs.setTarget(id, fruitName, source)
+ ADFieldJobs.setField(ADFieldModel.setTarget(ADFieldJobs.getField(id), fruitName, source))
ADFieldJobs.log(id, "mål-afgrøde: %s", fruitName ~= "" and fruitName or "ingen")
ADFieldJobs.save()
end
diff --git a/FS25_ADSmartPickup/adFieldModel.lua b/FS25_ADSmartPickup/adFieldModel.lua
index 591fb7c..ed5358b 100644
--- a/FS25_ADSmartPickup/adFieldModel.lua
+++ b/FS25_ADSmartPickup/adFieldModel.lua
@@ -43,6 +43,8 @@ local DEFAULT_PLAN = {
mode = "manual", product = "auto", rake = false, rigs = 1, unloaders = 1,
mulch = false, lime = true, soil = "auto", sow = false, sowFruit = "", roll = false,
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}
-- 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
-- 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)
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.plan.mode = copy.plan.targetFruit ~= "" and "auto" or "manual"
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),
fertilize = flag(plan.fertilize), weed = flag(plan.weed),
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, " "),
mowWidth = field.mowWidth or 0,
mowVehicle = field.mowVehicleId or "",
@@ -503,6 +508,9 @@ function ADFieldModel.fromRecord(record)
plan.weed = readFlag(record.weed, true)
plan.targetFruit = record.targetFruit or ""
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"
field.kind = readText(record.kind)
field.lastFruit = readText(record.lastFruit)
diff --git a/FS25_ADSmartPickup/adFieldStorage.lua b/FS25_ADSmartPickup/adFieldStorage.lua
index 1b576c9..625e269 100644
--- a/FS25_ADSmartPickup/adFieldStorage.lua
+++ b/FS25_ADSmartPickup/adFieldStorage.lua
@@ -12,6 +12,7 @@ ADFieldStorage.FIELD_TYPES = {
rigs = "Int", unloaders = "Int", mulch = "Int", lime = "Int", soil = "String", sow = "Int",
sowFruit = "String", roll = "Int", fertilize = "Int", weed = "Int",
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",
dedicated = "String",
}
diff --git a/FS25_ADSmartPickup/l10n/l10n_da.xml b/FS25_ADSmartPickup/l10n/l10n_da.xml
index 21cd4fa..7a1f33f 100644
--- a/FS25_ADSmartPickup/l10n/l10n_da.xml
+++ b/FS25_ADSmartPickup/l10n/l10n_da.xml
@@ -167,6 +167,7 @@
+
diff --git a/FS25_ADSmartPickup/l10n/l10n_en.xml b/FS25_ADSmartPickup/l10n/l10n_en.xml
index aacf6bc..afe75ac 100644
--- a/FS25_ADSmartPickup/l10n/l10n_en.xml
+++ b/FS25_ADSmartPickup/l10n/l10n_en.xml
@@ -167,6 +167,7 @@
+