diff --git a/FS25_ADSmartPickup/adRunsController.lua b/FS25_ADSmartPickup/adRunsController.lua index b03d0d8..565913f 100644 --- a/FS25_ADSmartPickup/adRunsController.lua +++ b/FS25_ADSmartPickup/adRunsController.lua @@ -573,11 +573,26 @@ local function getCargoTarget(adEnv, run, vehicle) return ADOutbound.planCargoTarget(adEnv, run, vehicle, fillType, liters) or false end +-- Én gang pr. (run, bygningsliste): valgte bygninger uden markør springes over. +local warnedMissing = {} +local function warnMissingMarkers(run, missing) + local text = table.concat(missing, ", ") + if warnedMissing[run.id] == text then + return + end + warnedMissing[run.id] = text + Logging.warning(ADRunsController.LOG_PREFIX .. "run '%s': %s har ingen AD-markør ved triggeren (inden for 40 m) og springes over", tostring(run.name), text) +end + local function validateOutboundVehicle(adEnv, run, vehicle, result) local resolved = ADRunsController.resolveMarkers(adEnv, run) if resolved.missing[1] ~= nil then - result.reason, result.missingBuilding = "noMarker", resolved.missing[1] - return result + -- afvis kun når INGEN valgt bygning (eller rå markør) har en markør; ellers kør med de andre + if #(run.sourceWayPointIds or {}) == 0 then + result.reason, result.missingBuilding = "noMarker", resolved.missing[1] + return result + end + warnMissingMarkers(run, resolved.missing) end if #getRunSources(adEnv, run, ADSmartPickup.getFarmId(vehicle)) == 0 then result.reason = "noSource" @@ -645,8 +660,11 @@ function ADRunsController.validateVehicle(adEnv, run, vehicle) end local resolvedIn = ADRunsController.resolveMarkers(adEnv, run) if resolvedIn.missing[1] ~= nil then - result.reason, result.missingBuilding = "noMarker", resolvedIn.missing[1] - return result + if #ADRunsController.getRunTargets(run) == 0 then + result.reason, result.missingBuilding = "noMarker", resolvedIn.missing[1] + return result + end + warnMissingMarkers(run, resolvedIn.missing) end local hasTarget = false for _, wayPointId in ipairs(ADRunsController.getRunTargets(run)) do diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 5f947eb..d5c44ac 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.14.1.0 + 1.14.2.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adRunsController.lua b/tests/test_adRunsController.lua index 261b802..d58dc5f 100644 --- a/tests/test_adRunsController.lua +++ b/tests/test_adRunsController.lua @@ -664,6 +664,14 @@ ADRunsController.updateRun(flowOut.id, {sourceBuildingIds = {"shed"}, sourceWayP local cfValidation = ADRunsController.validateVehicle(adEnv, ADRuns.getRun(ADRunsController.store, flowOut.id), cfVehicle) check("CF4 noMarker", cfValidation.reason, "noMarker") check("CF4 hvilken bygning", cfValidation.missingBuilding, "Palleskur") +-- CF4b: ÉN bygning uden markør blandt flere med markør -> start alligevel, advar om den ene +ADRunsController.updateRun(flowOut.id, {sourceBuildingIds = {"barn1", "shed"}, sourceWayPointIds = {}}) +logLines = {} +local cfValidation2 = ADRunsController.validateVehicle(adEnv, ADRuns.getRun(ADRunsController.store, flowOut.id), cfVehicle) +check("CF4b ikke afvist pga. markør", cfValidation2.reason ~= "noMarker", true) +local warned = false +for _, line in ipairs(logLines) do if line:find("Palleskur", 1, true) and line:find("springes over", 1, true) then warned = true end end +check("CF4b advarsel nævner bygningen", warned, true) -- CF5: flow-række til tavlen ADRunsController.updateRun(flowOut.id, {sourceBuildingIds = {"barn1"}, products = {{fillType = "SUGAR", policy = "sell"}, {fillType = "FORAGE", policy = "store"}}, collectRound = true}) ADRunsController.assignVehicle(flowOut.id, cfVehicle)