feat: læs-bytte fra Wait — rest afleveres i silo når målet mangler en anden vare
This commit is contained in:
@@ -96,6 +96,9 @@ local function release(vehicle)
|
||||
claims[wait.waitMarker.id] = nil
|
||||
end
|
||||
waits[vehicle] = nil
|
||||
if ADLoadSwap ~= nil then
|
||||
ADLoadSwap.clearWarning(vehicle)
|
||||
end
|
||||
end
|
||||
|
||||
-- Står køretøjet ved målet med rest-læs, som målet ikke kan tage? Så find et Wait-punkt.
|
||||
@@ -136,7 +139,7 @@ local function startWaiting(adEnv, task)
|
||||
end
|
||||
|
||||
-- Ventende køretøj: er der nu plads til hele resten, køres tilbage til målet.
|
||||
local function updateWaiting(adEnv, task, wait)
|
||||
local function updateWaiting(adEnv, task, wait, dt)
|
||||
local vehicle = task.vehicle
|
||||
if wait.task ~= task then
|
||||
release(vehicle)
|
||||
@@ -149,6 +152,12 @@ local function updateWaiting(adEnv, task, wait)
|
||||
end
|
||||
local free, capacity = ADSmartPickup.getTargetFreeCapacity(adEnv, vehicle, fillType)
|
||||
if free == nil or not ADSupplyPlanner.canUnloadRest(free, rest, capacity) then
|
||||
if ADLoadSwap ~= nil then
|
||||
local isReachable = function(markerId)
|
||||
return hasRouteBothWays(adEnv, vehicle, markerId, wait.homeDestinationID)
|
||||
end
|
||||
ADLoadSwap.tryFromWait(adEnv, task, wait, dt, redirect, release, isReachable)
|
||||
end
|
||||
return
|
||||
end
|
||||
local home = wait.homeDestinationID
|
||||
@@ -157,10 +166,10 @@ local function updateWaiting(adEnv, task, wait)
|
||||
Logging.info(ADUnloadWait.LOG_PREFIX .. "'%s' kører tilbage fra %s og læsser %.0f l af (målet har %.0f l fri)", tostring(vehicle:getName()), tostring(wait.waitMarker.name), rest, free)
|
||||
end
|
||||
|
||||
function ADUnloadWait.beforeUpdate(adEnv, task)
|
||||
function ADUnloadWait.beforeUpdate(adEnv, task, dt)
|
||||
local wait = waits[task.vehicle]
|
||||
if wait ~= nil then
|
||||
updateWaiting(adEnv, task, wait)
|
||||
updateWaiting(adEnv, task, wait, dt)
|
||||
else
|
||||
startWaiting(adEnv, task)
|
||||
end
|
||||
@@ -204,7 +213,7 @@ function ADUnloadWait.install(adEnv)
|
||||
local originalUpdate, originalFinished, originalGetSetting = task.update, task.finished, autoDrive.getSetting
|
||||
|
||||
task.update = function(self, dt)
|
||||
local ok, err = pcall(ADUnloadWait.beforeUpdate, adEnv, self)
|
||||
local ok, err = pcall(ADUnloadWait.beforeUpdate, adEnv, self, dt)
|
||||
if not ok then
|
||||
Logging.warning(ADUnloadWait.LOG_PREFIX .. "fejl i Wait-punkt-logik, AutoDrive fortsætter selv: %s", tostring(err))
|
||||
release(self.vehicle)
|
||||
|
||||
Reference in New Issue
Block a user