fix: kørende traktor stoppes når den fjernes fra run / run slettes; stop logges (v1.11.1.0)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user