diff --git a/CHANGELOG.md b/CHANGELOG.md index 78e3f8b..8f6b708 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ står i [docs/BRUGERMANUAL.md](docs/BRUGERMANUAL.md) (dansk) og [docs/USER_MANUA ## 1.60 — "Kræver handling" → flow, menuplacering, flow-vogne i guiden +- **1.60.12** "Start alle" ophæver altid pausen: et flow på pause, hvis traktorer stadig kørte en gemt AD-tur, + blev talt som "kørte allerede" og forblev stoppet — traktoren hentede sin vogn og kørte den straks hjem igen. - **1.60.11** Udkørselsregler vises kun, når en vare bruger dem: salgsgrænserne ("Sælg fra", "Sælg altid over") kun ved Salg / Salg, ellers lager, og "Kør til lager over" kun ved Lager / Salg, ellers lager. Gælder Regler-trinnet, resuméet og status (et rent lagerflow viser fx kun "lager > 80 %"). diff --git a/FS25_ADSmartPickup/adRuns.lua b/FS25_ADSmartPickup/adRuns.lua index 0884145..053ecdf 100644 --- a/FS25_ADSmartPickup/adRuns.lua +++ b/FS25_ADSmartPickup/adRuns.lua @@ -43,6 +43,15 @@ local function clampRange(value, default, min, max) end -- Flow-vogne: {[traktorId] = vognId} (maskinpulje — flowet henter sin egen vogn). +-- Start alle pr. flow: isRunning (traktorer kører AD), stopped (pause fra Stop alt / Stop). +-- -> "queue" (start traktorerne), "resume" (kører allerede: kun pausen ophæves), "skip". +-- In-game 29/9: flows på pause hvis traktorer kørte videre på en gemt AD-tur blev talt som 'kørte allerede', +-- forblev stoppede, og traktoren kørte vognen hjem lige efter at have hentet den. +function ADRuns.startAllAction(isRunning, stopped) + if not isRunning then return "queue" end + return stopped and "resume" or "skip" +end + function ADRuns.copyWagons(wagons) local copy = {} for tractorId, wagonId in pairs(wagons or {}) do copy[tractorId] = wagonId end diff --git a/FS25_ADSmartPickup/adRunsController.lua b/FS25_ADSmartPickup/adRunsController.lua index 8ee9980..b3b3e8a 100644 --- a/FS25_ADSmartPickup/adRunsController.lua +++ b/FS25_ADSmartPickup/adRunsController.lua @@ -1137,8 +1137,10 @@ function ADRunsController.queueStartAll(adEnv) local queue = {} for _, run in ipairs(ADRunsController.store.runs) do if #run.vehicleIds > 0 then - if ADRunsController.getRunStatus(adEnv, run).isRunning then + local action = ADRuns.startAllAction(ADRunsController.getRunStatus(adEnv, run).isRunning, run.stopped == true) + if action ~= "queue" then summary.alreadyRunning = summary.alreadyRunning + 1 + if action == "resume" then run.stopped = false end else run.stopped = false for _, vehicleId in ipairs(run.vehicleIds) do @@ -1310,8 +1312,10 @@ function ADRunsController.startAllRuns(adEnv) local summary = {runsStarted = 0, alreadyRunning = 0, vehiclesStarted = 0, results = {}} for _, run in ipairs(ADRunsController.store.runs) do if #run.vehicleIds > 0 then - if ADRunsController.getRunStatus(adEnv, run).isRunning then + local action = ADRuns.startAllAction(ADRunsController.getRunStatus(adEnv, run).isRunning, run.stopped == true) + if action ~= "queue" then summary.alreadyRunning = summary.alreadyRunning + 1 + if action == "resume" then run.stopped = false end else local startedHere = 0 for _, result in ipairs(ADRunsController.startRun(adEnv, run.id)) do diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index e024abf..4ad0670 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.60.11.0 + 1.60.12.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adRuns.lua b/tests/test_adRuns.lua index fc82f5f..7d65071 100644 --- a/tests/test_adRuns.lua +++ b/tests/test_adRuns.lua @@ -373,5 +373,13 @@ do 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 + +-- Start alle: et flow på pause (Stop alt) skal have pausen ophævet, også når dets traktorer allerede kører AD +-- (in-game 29/9: 5 flows blev talt som 'kørte allerede', forblev stoppede, og traktorerne kørte vognen hjem igen) +check("start alle: kører ikke -> i kø", ADRuns.startAllAction(false, true), "queue") +check("start alle: kører ikke, ikke stoppet -> i kø", ADRuns.startAllAction(false, false), "queue") +check("start alle: kører men stoppet -> ophæv pause", ADRuns.startAllAction(true, true), "resume") +check("start alle: kører og ikke stoppet -> intet", ADRuns.startAllAction(true, false), "skip") + print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)