fix(flows): Start alle ophæver pausen også for flows hvis traktorer allerede kører

Flows på pause (Stop alt) med traktorer der kørte videre på en gemt AD-tur blev
talt som 'kørte allerede' og forblev stoppede; efter at have hentet vognen så
flowet sig selv som stoppet og kørte vognen hjem igen (v1.60.12.0).
This commit is contained in:
2026-09-29 21:08:07 +02:00
parent 5827143327
commit d420d5026d
5 changed files with 26 additions and 3 deletions
+2
View File
@@ -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 — "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 - **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. 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 %"). Gælder Regler-trinnet, resuméet og status (et rent lagerflow viser fx kun "lager > 80 %").
+9
View File
@@ -43,6 +43,15 @@ local function clampRange(value, default, min, max)
end end
-- Flow-vogne: {[traktorId] = vognId} (maskinpulje — flowet henter sin egen vogn). -- 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) function ADRuns.copyWagons(wagons)
local copy = {} local copy = {}
for tractorId, wagonId in pairs(wagons or {}) do copy[tractorId] = wagonId end for tractorId, wagonId in pairs(wagons or {}) do copy[tractorId] = wagonId end
+6 -2
View File
@@ -1137,8 +1137,10 @@ function ADRunsController.queueStartAll(adEnv)
local queue = {} local queue = {}
for _, run in ipairs(ADRunsController.store.runs) do for _, run in ipairs(ADRunsController.store.runs) do
if #run.vehicleIds > 0 then 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 summary.alreadyRunning = summary.alreadyRunning + 1
if action == "resume" then run.stopped = false end
else else
run.stopped = false run.stopped = false
for _, vehicleId in ipairs(run.vehicleIds) do for _, vehicleId in ipairs(run.vehicleIds) do
@@ -1310,8 +1312,10 @@ function ADRunsController.startAllRuns(adEnv)
local summary = {runsStarted = 0, alreadyRunning = 0, vehiclesStarted = 0, results = {}} local summary = {runsStarted = 0, alreadyRunning = 0, vehiclesStarted = 0, results = {}}
for _, run in ipairs(ADRunsController.store.runs) do for _, run in ipairs(ADRunsController.store.runs) do
if #run.vehicleIds > 0 then 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 summary.alreadyRunning = summary.alreadyRunning + 1
if action == "resume" then run.stopped = false end
else else
local startedHere = 0 local startedHere = 0
for _, result in ipairs(ADRunsController.startRun(adEnv, run.id)) do for _, result in ipairs(ADRunsController.startRun(adEnv, run.id)) do
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?> <?xml version="1.0" encoding="utf-8" standalone="no"?>
<modDesc descVersion="107"> <modDesc descVersion="107">
<author>masterdraco</author> <author>masterdraco</author>
<version>1.60.11.0</version> <version>1.60.12.0</version>
<title> <title>
<en>AD Smart Pickup</en> <en>AD Smart Pickup</en>
</title> </title>
+8
View File
@@ -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: 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") check("besked: Solo står tom -> rød", notes[2].runName .. "/" .. notes[2].left .. "/" .. tostring(notes[2].critical), "Solo/0/true")
end 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")) print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
os.exit(failures == 0 and 0 or 1) os.exit(failures == 0 and 0 or 1)