fix(runs): fyldte traktorer registreres 'på vej' ved run-start og efter AutoDrives genstart ved indlæsning — ellers så mål-valget 0 vogne på vej og sendte alle til samme biogas-drop; startloggen viser det valgte mål (v1.35.3.0)
This commit is contained in:
@@ -394,6 +394,27 @@ function ADRunsController.chooseTarget(adEnv, run, vehicle)
|
||||
return bestId or targets[1]
|
||||
end
|
||||
|
||||
-- AutoDrive genstarter aktive traktorer efter indlæsning uden om run-starten: fyldte run-traktorer
|
||||
-- registreres "på vej" til deres nuværende mål (ellers ser mål-valget 0 vogne på vej overalt).
|
||||
ADRunsController.ADOPT_INTERVAL_MS = 5000
|
||||
local adoptTimerMs = 0
|
||||
function ADRunsController.adoptLoadedThrottled(adEnv, dt)
|
||||
adoptTimerMs = adoptTimerMs + (dt or 0)
|
||||
if adEnv == nil or adoptTimerMs < ADRunsController.ADOPT_INTERVAL_MS then return end
|
||||
adoptTimerMs = 0
|
||||
for _, vehicle in pairs(getFarmVehiclesById(adEnv)) do
|
||||
local run = ADRunsController.getRunForVehicle(vehicle)
|
||||
local stateModule = vehicle.ad ~= nil and vehicle.ad.stateModule or nil
|
||||
if run ~= nil and (run.kind or "supply") == "supply" and stateModule ~= nil and stateModule:isActive()
|
||||
and ADSmartPickup.getEnRoute(vehicle) == nil then
|
||||
local second = stateModule.getSecondMarker ~= nil and stateModule:getSecondMarker() or nil
|
||||
if second ~= nil and ADSmartPickup.registerCargo(adEnv, vehicle, second.id, ADRunsController.getRunIngredients(adEnv, run, vehicle)) then
|
||||
Logging.info(ADRunsController.LOG_PREFIX .. "'%s' har læs på vej til %s (overtaget efter start/indlæsning)", tostring(ADRuns.vehicleLabel(vehicle)), tostring(second.name or second.id))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Fire traktorer kan hedde det samme; løbenummeret er pladsen i farmens AD-køretøjsliste.
|
||||
function ADRunsController.getVehicleLabel(adEnv, vehicle)
|
||||
local label, model = tostring(ADRuns.vehicleLabel(vehicle)), tostring(vehicle:getName())
|
||||
@@ -973,6 +994,10 @@ local function applyRunToVehicle(adEnv, run, vehicle, ingredients)
|
||||
local targetId = ADRunsController.chooseTarget(adEnv, run, vehicle) or run.targetWayPointId
|
||||
local dump = ADRunsController.findWrongCargoDump(adEnv, run, vehicle, targetId)
|
||||
stateModule:setSecondMarkerByWayPointId(targetId)
|
||||
-- allerede fyldt: registrér læsset på vej, så næste traktor i samme start vælger et andet drop
|
||||
if dump == nil and ADSmartPickup.registerCargo ~= nil then
|
||||
ADSmartPickup.registerCargo(adEnv, vehicle, targetId, ingredients)
|
||||
end
|
||||
if dump ~= nil then
|
||||
if ADUnloadWait ~= nil and ADUnloadWait.setDumpTarget ~= nil then
|
||||
ADUnloadWait.setDumpTarget(vehicle, dump.marker.id)
|
||||
@@ -1060,7 +1085,9 @@ function ADRunsController.startRun(adEnv, runId)
|
||||
local ok, err = pcall(applyAndStart, adEnv, run, vehicle, ingredients)
|
||||
if ok then
|
||||
started = started + 1
|
||||
local target = run.kind == "outbound" and ("kilde " .. tostring(run.sourceWayPointIds[1])) or ("markør " .. tostring(run.targetWayPointId))
|
||||
local second = vehicle.ad.stateModule.getSecondMarker ~= nil and vehicle.ad.stateModule:getSecondMarker() or nil
|
||||
local target = run.kind == "outbound" and ("kilde " .. tostring(run.sourceWayPointIds[1]))
|
||||
or ("markør " .. tostring(second ~= nil and second.id or run.targetWayPointId))
|
||||
Logging.info(ADRunsController.LOG_PREFIX .. "run '%s': '%s' startet mod %s", tostring(run.name), tostring(ADRuns.vehicleLabel(vehicle)), target)
|
||||
else
|
||||
result.ok, result.reason = false, "error"
|
||||
|
||||
Reference in New Issue
Block a user