fix: kørende traktor stoppes når den fjernes fra run / run slettes; stop logges (v1.11.1.0)

This commit is contained in:
2026-09-23 02:04:31 +02:00
parent bcd7de8344
commit 3f29c8cebe
4 changed files with 48 additions and 4 deletions
+30 -2
View File
@@ -79,7 +79,13 @@ function ADRunsController.createRun(name)
return run
end
function ADRunsController.deleteRun(runId)
function ADRunsController.deleteRun(runId, adEnv)
local run = ADRuns.getRun(ADRunsController.store, runId)
if run ~= nil and adEnv ~= nil then
for _, vehicleId in ipairs(run.vehicleIds) do
ADRunsController.stopIfRunning(ADRunsController.findVehicleById(adEnv, vehicleId), "run slettet")
end
end
ADRunsController.store = ADRuns.deleteRun(ADRunsController.store, runId)
end
@@ -109,6 +115,7 @@ function ADRunsController.unassignVehicle(vehicle)
local id = ADRunsController.getVehicleId(vehicle)
if id ~= nil then
ADRunsController.store = ADRuns.unassignVehicle(ADRunsController.store, id)
ADRunsController.stopIfRunning(vehicle, "fjernet fra run")
end
end
@@ -429,6 +436,26 @@ function ADRunsController.startRun(adEnv, runId)
return results
end
-- Som ADInputManager:input_start_stop: loops nulstilles og AD stoppes.
local function stopVehicle(vehicle)
local stateModule = vehicle.ad.stateModule
if stateModule.setLoopsDone ~= nil then
stateModule:setLoopsDone(0)
end
vehicle:stopAutoDrive()
end
-- En kørende traktor der fjernes fra sit run (eller hvis run slettes) kører run'ets job —
-- den stoppes, så den ikke fortsætter uden run. Returnerer true hvis den blev stoppet.
function ADRunsController.stopIfRunning(vehicle, reason)
if vehicle == nil or vehicle.ad == nil or not isVehicleActive(vehicle) then
return false
end
stopVehicle(vehicle)
Logging.info(ADRunsController.LOG_PREFIX .. "'%s' stoppet (%s)", tostring(vehicle:getName()), tostring(reason))
return true
end
function ADRunsController.stopRun(adEnv, runId)
local run = ADRuns.getRun(ADRunsController.store, runId)
local stopped = 0
@@ -439,8 +466,9 @@ function ADRunsController.stopRun(adEnv, runId)
for _, vehicleId in ipairs(run.vehicleIds) do
local vehicle = vehiclesById[vehicleId]
if vehicle ~= nil and isVehicleActive(vehicle) then
vehicle:stopAutoDrive()
stopVehicle(vehicle)
stopped = stopped + 1
Logging.info(ADRunsController.LOG_PREFIX .. "run '%s': '%s' stoppet", tostring(run.name), tostring(vehicle:getName()))
end
end
return stopped
+1 -1
View File
@@ -819,7 +819,7 @@ function SmartPickupFrame:onDeleteResult(yes)
self:safe(function(frame)
local run = frame:getRun()
if yes and run ~= nil then
ADRunsController.deleteRun(run.id)
ADRunsController.deleteRun(run.id, frame.getAdEnv())
frame.selectedRunId = nil
frame:requestRebuild()
end
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<modDesc descVersion="107">
<author>masterdraco</author>
<version>1.11.0.0</version>
<version>1.11.1.0</version>
<title>
<en>AD Smart Pickup</en>
</title>