feat(oversigt): 'Stop alt og parkér' — flows, markarbejde og marksilo-lån stoppes, køretøjer til AD-parkering (manuelle høstere nævnes), pause der gemmes; 'Start alle' ophæver pausen og starter traktorerne én ad gangen hvert 10. sekund (v1.42.0.0)
This commit is contained in:
@@ -1153,6 +1153,56 @@ function ADRunsController.queueStartAll(adEnv)
|
||||
return summary
|
||||
end
|
||||
|
||||
-- Stop alt og parkér (Oversigt): flows, markarbejde og marksilo-lån stoppes, køretøjerne sendes til deres
|
||||
-- AD-parkeringspunkt, og moden sættes på pause (gemmes), så intet starter igen før "Start alle".
|
||||
-- Høstere med manuel transport parkeres ikke (må ikke køre på vejen med skærebord). Returnerer
|
||||
-- {stopped, parked, noPark = {navne}, manual = {navne}}.
|
||||
function ADRunsController.stopAllAndPark(adEnv)
|
||||
local summary = {stopped = 0, parked = 0, noPark = {}, manual = {}}
|
||||
ADRunsController.clearStartQueue()
|
||||
local toPark, seen = {}, {}
|
||||
local vehiclesById = getFarmVehiclesById(adEnv)
|
||||
for _, run in ipairs(ADRunsController.store.runs) do
|
||||
for _, vehicleId in ipairs(run.vehicleIds) do
|
||||
local vehicle = vehiclesById[vehicleId]
|
||||
if vehicle ~= nil and not seen[vehicle] then
|
||||
seen[vehicle] = true
|
||||
if isVehicleActive(vehicle) then
|
||||
stopVehicle(vehicle)
|
||||
summary.stopped = summary.stopped + 1
|
||||
end
|
||||
table.insert(toPark, vehicle)
|
||||
end
|
||||
end
|
||||
ADRunsController.runningRuns[run.id] = nil
|
||||
end
|
||||
if ADFieldWork ~= nil and ADFieldWork.stopAllAssignments ~= nil then
|
||||
for _, stopped in ipairs(ADFieldWork.stopAllAssignments(adEnv) or {}) do
|
||||
summary.stopped = summary.stopped + 1
|
||||
if stopped.manual then
|
||||
table.insert(summary.manual, tostring(ADRuns.vehicleLabel(stopped.vehicle)))
|
||||
elseif not seen[stopped.vehicle] then
|
||||
seen[stopped.vehicle] = true
|
||||
table.insert(toPark, stopped.vehicle)
|
||||
end
|
||||
end
|
||||
end
|
||||
if ADFieldSilos ~= nil and ADFieldSilos.stopAll ~= nil then pcall(ADFieldSilos.stopAll, adEnv) end
|
||||
if ADFieldJobs ~= nil and ADFieldJobs.setPaused ~= nil then ADFieldJobs.setPaused(true) end
|
||||
for _, vehicle in ipairs(toPark) do
|
||||
local park = ADFieldWork ~= nil and ADFieldWork.parkMarkerId ~= nil and ADFieldWork.parkMarkerId(adEnv, vehicle) or nil
|
||||
if park ~= nil then
|
||||
local ok = pcall(ADFieldWork.startAd, adEnv, vehicle, adEnv.AutoDrive.MODE_DRIVETO, park, nil)
|
||||
if ok then summary.parked = summary.parked + 1 end
|
||||
else
|
||||
table.insert(summary.noPark, tostring(ADRuns.vehicleLabel(vehicle)))
|
||||
end
|
||||
end
|
||||
Logging.info(ADRunsController.LOG_PREFIX .. "Stop alt og parkér: %d stoppet, %d til parkering, %d uden parkeringspunkt, %d høstere hentes manuelt — pause",
|
||||
summary.stopped, summary.parked, #summary.noPark, #summary.manual)
|
||||
return summary
|
||||
end
|
||||
|
||||
-- Starter næste traktor i køen, når der er gået STAGGER_MS siden forrige.
|
||||
function ADRunsController.processStartQueue(adEnv, dt)
|
||||
if #ADRunsController.startQueue == 0 then return end
|
||||
|
||||
Reference in New Issue
Block a user