fix: forkert last midt i et run — pålæsning afsluttes straks, målet der ikke tager varen regnes som fuldt (Wait), og resten læsses af i silo fra Wait (v1.11.7.0)
This commit is contained in:
@@ -516,7 +516,8 @@ end
|
||||
|
||||
-- Fri plads + kapacitet for varen i køretøjets aflæsningsmål (Wait-punkt-logikken);
|
||||
-- nil hvis målet ikke kendes eller ikke tager varen.
|
||||
function ADSmartPickup.getTargetFreeCapacity(adEnv, driver, fillType)
|
||||
-- askAccepted=true: returnerer i stedet true/false for "tager målet varen?" (nil = mål ukendt).
|
||||
function ADSmartPickup.getTargetFreeCapacity(adEnv, driver, fillType, askAccepted)
|
||||
local secondMarker = driver.ad.stateModule:getSecondMarker()
|
||||
local farmId = getFarmId(driver)
|
||||
if secondMarker == nil or farmId == nil then
|
||||
@@ -528,6 +529,9 @@ function ADSmartPickup.getTargetFreeCapacity(adEnv, driver, fillType)
|
||||
return nil
|
||||
end
|
||||
local level, capacity = getTargetLevelAndCapacity(target, fillType, farmId)
|
||||
if askAccepted then
|
||||
return level ~= nil
|
||||
end
|
||||
if level == nil then
|
||||
return nil
|
||||
end
|
||||
@@ -723,7 +727,37 @@ local function installLoadWaitHook(adEnv)
|
||||
return pickup.stalledMs > ADSmartPickup.MAX_WAIT_WITHOUT_LOADING_MS
|
||||
end
|
||||
|
||||
-- Vognen kan kun læsse oven i SAMME vare. Er der en anden vare på vognen (rest fra et
|
||||
-- tidligere run), afsluttes pålæsningen med det samme, så AD kører til aflæsning med
|
||||
-- det den har — dér tager Wait-/bytte-logikken over, hvis målet ikke tager varen.
|
||||
local function hasWrongCargo(loadTask)
|
||||
if loadTask.spuCargoChecked or ADUnloadWait == nil or ADUnloadWait.getRestLoad == nil then
|
||||
return false
|
||||
end
|
||||
loadTask.spuCargoChecked = true
|
||||
local pickup = activePickups[loadTask.vehicle]
|
||||
if pickup == nil or pickup.fillType == nil then
|
||||
return false
|
||||
end
|
||||
local fillType, liters = ADUnloadWait.getRestLoad(adEnv, loadTask.vehicle)
|
||||
if fillType == nil or liters < 100 or fillType == pickup.fillType then
|
||||
return false
|
||||
end
|
||||
local cargoName = g_fillTypeManager ~= nil and g_fillTypeManager:getFillTypeNameByIndex(fillType) or tostring(fillType)
|
||||
local wantedName = g_fillTypeManager ~= nil and g_fillTypeManager:getFillTypeNameByIndex(pickup.fillType) or tostring(pickup.fillType)
|
||||
Logging.info(ADSmartPickup.LOG_PREFIX .. "'%s' har %.0f l %s på vognen og skulle hente %s — leverer først det den har", tostring(loadTask.vehicle:getName()), liters, tostring(cargoName), tostring(wantedName))
|
||||
return true
|
||||
end
|
||||
|
||||
task.update = function(self, dt)
|
||||
local wrongOk, isWrong = pcall(hasWrongCargo, self)
|
||||
if wrongOk and isWrong then
|
||||
activePickups[self.vehicle] = nil
|
||||
if self.finished ~= nil then
|
||||
self:finished()
|
||||
return
|
||||
end
|
||||
end
|
||||
local ok, shouldWait = pcall(ADSmartPickup.shouldWaitForLoading, self.vehicle)
|
||||
shouldWait = ok and shouldWait
|
||||
if shouldWait then
|
||||
|
||||
Reference in New Issue
Block a user