diff --git a/FS25_ADSmartPickup/adFieldModel.lua b/FS25_ADSmartPickup/adFieldModel.lua index b75e09b..9fb3ca5 100644 --- a/FS25_ADSmartPickup/adFieldModel.lua +++ b/FS25_ADSmartPickup/adFieldModel.lua @@ -360,7 +360,16 @@ function ADFieldModel.startCare(field, stage) end -- Et sæt må ikke over Courseplays grænse; efter-trin skal dække mindst den krævede bredde. +-- Under dette er bredden ikke læst rigtigt (spreder uden AI-markører gav 0,5 m): Courseplay laver så et +-- kursus med rækker hver halve meter — på en 72 ha mark fryser spillet (in-game 26/9, F108). +ADFieldModel.MIN_WORK_WIDTH = 1.5 +-- roller uden eget kursus (følger høsteren / samler baller): ingen arbejdsbredde +ADFieldModel.NO_WIDTH_ROLES = {unloader = true, baleCollector = true} + function ADFieldModel.checkWidth(role, width, requiredWidth) + if width < ADFieldModel.MIN_WORK_WIDTH and not ADFieldModel.NO_WIDTH_ROLES[role] then + return false, "widthUnknown", {width} + end if width > ADFieldModel.CP_MAX_WIDTH + ADFieldModel.WIDTH_TOLERANCE then return false, "tooWide", {width, ADFieldModel.CP_MAX_WIDTH} end diff --git a/FS25_ADSmartPickup/gui/SmartPickupFieldTab.lua b/FS25_ADSmartPickup/gui/SmartPickupFieldTab.lua index d0f5fe2..399a0f8 100644 --- a/FS25_ADSmartPickup/gui/SmartPickupFieldTab.lua +++ b/FS25_ADSmartPickup/gui/SmartPickupFieldTab.lua @@ -327,6 +327,7 @@ function SmartPickupFrame:rigDetails(rig) table.insert(parts, i18n:getText(rig.mechanical and "spu_field_rig_mechanical" or "spu_field_rig_herbicide")) end if (rig.width or 0) > ADFieldModel.CP_MAX_WIDTH then table.insert(parts, i18n:getText("spu_field_tooWideShort")) end + if (rig.width or 0) < ADFieldModel.MIN_WORK_WIDTH and not ADFieldModel.NO_WIDTH_ROLES[rig.role] then table.insert(parts, i18n:getText("spu_field_widthUnknownShort")) end local assignment = ADFieldJobs.state.assignments[rig.id] if assignment ~= nil then table.insert(parts, string.format("F%d", assignment.fieldId)) end return #parts > 0 and (" — " .. table.concat(parts, " — ")) or "" diff --git a/FS25_ADSmartPickup/l10n/l10n_da.xml b/FS25_ADSmartPickup/l10n/l10n_da.xml index 82f8a75..6f6fdbb 100644 --- a/FS25_ADSmartPickup/l10n/l10n_da.xml +++ b/FS25_ADSmartPickup/l10n/l10n_da.xml @@ -53,6 +53,7 @@ + @@ -84,6 +85,7 @@ + diff --git a/FS25_ADSmartPickup/l10n/l10n_en.xml b/FS25_ADSmartPickup/l10n/l10n_en.xml index 75c98da..5f4af66 100644 --- a/FS25_ADSmartPickup/l10n/l10n_en.xml +++ b/FS25_ADSmartPickup/l10n/l10n_en.xml @@ -53,6 +53,7 @@ + @@ -84,6 +85,7 @@ + diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 8808b0b..f085a5f 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.29.0.0 + 1.29.1.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adFieldModel.lua b/tests/test_adFieldModel.lua index e1b7a68..f6e8ad7 100644 --- a/tests/test_adFieldModel.lua +++ b/tests/test_adFieldModel.lua @@ -67,6 +67,14 @@ check("M7 maks slå", M.maxRigs("mowing"), 1) local okWide, whyWide = M.checkWidth("mower", 60, nil) check("M7 over 50 m", okWide, false); check("M7 grund", whyWide, "tooWide") check("M7 40,8 m slå ok", (M.checkWidth("mower", 40.8, nil)), true) +-- M7b: bredde under 1,5 m er ikke læst rigtigt (spreder gav 0,5 m -> CP-kursus hver halve meter på 72 ha +-- -> spillet frøs, in-game 26/9) — sendes aldrig ud +local okTiny, whyTiny = M.checkWidth("fertilizer", 0.5, nil) +check("M7b 0,5 m afvises", okTiny, false) +check("M7b grund", whyTiny, "widthUnknown") +check("M7b 3 m strigle ok", (M.checkWidth("weeder", 3, nil)), true) +check("M7b aflæsningsvogn uden bredde ok", (M.checkWidth("unloader", 0, nil)), true) +check("M7b ballesamler uden bredde ok", (M.checkWidth("baleCollector", 0, nil)), true) local okNarrow, whyNarrow, args = M.checkWidth("collector", 20, 40.8) check("M7 for smal", okNarrow, false); check("M7 grund smal", whyNarrow, "tooNarrow"); check("M7 args", args[2], 40.8) check("M7 lige bred ok (tolerance)", (M.checkWidth("collector", 40.76, 40.8)), true)