diff --git a/FS25_ADSmartPickup/adRuns.lua b/FS25_ADSmartPickup/adRuns.lua index 79bf21f..0884145 100644 --- a/FS25_ADSmartPickup/adRuns.lua +++ b/FS25_ADSmartPickup/adRuns.lua @@ -361,6 +361,20 @@ function ADRuns.pruneMissingVehicles(store, exists) return new, missing end +-- Én besked pr. berørt flow efter pruneMissingVehicles: {runName, removed, left, critical} (critical = flowet +-- står uden traktorer og virker ikke). I samme rækkefølge som flowene. +function ADRuns.pruneNotices(storeAfter, removed) + local byName = {} + for _, entry in ipairs(removed or {}) do byName[entry.runName] = (byName[entry.runName] or 0) + 1 end + local notices = {} + for _, run in ipairs(storeAfter.runs) do + if byName[run.name] ~= nil then + table.insert(notices, {runName = run.name, removed = byName[run.name], left = #run.vehicleIds, critical = #run.vehicleIds == 0}) + end + end + return notices +end + -- En traktor er kun i ét run. Returnerer ny store + id på det run den blev flyttet FRA (nil = ingen). function ADRuns.assignVehicle(store, runId, vehicleId) local previous = ADRuns.findRunByVehicle(store, vehicleId) diff --git a/FS25_ADSmartPickup/adRunsController.lua b/FS25_ADSmartPickup/adRunsController.lua index db268b2..8ee9980 100644 --- a/FS25_ADSmartPickup/adRunsController.lua +++ b/FS25_ADSmartPickup/adRunsController.lua @@ -1513,6 +1513,14 @@ function ADRunsController.pruneMissingVehicles(adEnv) Logging.info(ADRunsController.LOG_PREFIX .. "run '%s': køretøj %s findes ikke længere — fjernet fra flowet", tostring(entry.runName), tostring(entry.vehicleId)) end ADRunsController.save() + -- besked på skærmen (højre side); rød når flowet står uden traktorer + if ADFieldJobs ~= nil and ADFieldJobs.notify ~= nil and g_i18n ~= nil then + for _, notice in ipairs(ADRuns.pruneNotices(store, removed)) do + local text = notice.critical and string.format(g_i18n:getText("spu_prune_empty"), notice.runName) + or string.format(g_i18n:getText("spu_prune_removed"), notice.runName, notice.removed, notice.left) + ADFieldJobs.notify(text, notice.critical) + end + end end function ADRunsController.installSaveHook() diff --git a/FS25_ADSmartPickup/l10n/l10n_da.xml b/FS25_ADSmartPickup/l10n/l10n_da.xml index 10af68a..676de04 100644 --- a/FS25_ADSmartPickup/l10n/l10n_da.xml +++ b/FS25_ADSmartPickup/l10n/l10n_da.xml @@ -261,6 +261,8 @@ + + diff --git a/FS25_ADSmartPickup/l10n/l10n_en.xml b/FS25_ADSmartPickup/l10n/l10n_en.xml index 769f5f2..6ada825 100644 --- a/FS25_ADSmartPickup/l10n/l10n_en.xml +++ b/FS25_ADSmartPickup/l10n/l10n_en.xml @@ -261,6 +261,8 @@ + + diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 116f0ca..f17f3db 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.59.6.0 + 1.59.7.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adRuns.lua b/tests/test_adRuns.lua index 779c8dd..fc82f5f 100644 --- a/tests/test_adRuns.lua +++ b/tests/test_adRuns.lua @@ -360,5 +360,18 @@ do local _, none = ADRuns.pruneMissingVehicles(st, function() return false end) check("prune: alle mangler -> intet fjernes", #none, 0) end +-- beskeder på skærmen efter oprydning: én pr. flow; rød når flowet står uden traktorer +do + local st, r1 = ADRuns.createRun(ADRuns.newStore(), "TMR", "supply") + local st2, r2 = ADRuns.createRun(st, "Solo", "supply") + st2 = ADRuns.assignVehicle(st2, r1.id, "keep") + st2 = ADRuns.assignVehicle(st2, r1.id, "gone1") + st2 = ADRuns.assignVehicle(st2, r2.id, "gone2") + local pruned, removed = ADRuns.pruneMissingVehicles(st2, function(id) return id == "keep" end) + local notes = ADRuns.pruneNotices(pruned, removed) + check("besked: én pr. flow", #notes, 2) + check("besked: TMR har traktorer tilbage", notes[1].runName .. "/" .. notes[1].left .. "/" .. tostring(notes[1].critical), "TMR/1/false") + check("besked: Solo står tom -> rød", notes[2].runName .. "/" .. notes[2].left .. "/" .. tostring(notes[2].critical), "Solo/0/true") +end print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)