fix: læs-bytte — Wait-logik kun ved AD's aflæsningsmål; frisk rest ved bytte
This commit is contained in:
@@ -42,6 +42,9 @@ end
|
||||
|
||||
-- Nærmeste silo med plads til resten og vejnet til/fra; siloer der allerede har varen foretrækkes.
|
||||
function ADLoadSwap.findDumpMarker(adEnv, vehicle, fillType, rest, homeWayPointId, isReachable)
|
||||
if vehicle.rootNode == nil then
|
||||
return nil
|
||||
end
|
||||
local farmId = ADSmartPickup.getFarmId(vehicle)
|
||||
local homeStation = ADSmartPickup.getUnloadStationAtWayPointId(adEnv, homeWayPointId, farmId)
|
||||
local x, _, z = getWorldTranslation(vehicle.rootNode)
|
||||
|
||||
@@ -107,6 +107,12 @@ local function startWaiting(adEnv, task)
|
||||
if not vehicle.ad.drivePathModule:isTargetReached() or vehicle.ad.trailerModule:isActiveAtTrigger() then
|
||||
return
|
||||
end
|
||||
-- Efter et bytte er opgavens mål en silo, ikke AD's rigtige aflæsningsmål (anden markør);
|
||||
-- der skal AD bare læsse af som normalt, uden Wait-logik.
|
||||
local target = vehicle.ad.stateModule.getSecondMarker ~= nil and vehicle.ad.stateModule:getSecondMarker() or nil
|
||||
if target == nil or task.destinationID ~= target.id then
|
||||
return
|
||||
end
|
||||
local fillType, rest = getRestLoad(adEnv, vehicle)
|
||||
if fillType == nil or rest < ADUnloadWait.MIN_REST_LITERS then
|
||||
return
|
||||
@@ -150,6 +156,8 @@ local function updateWaiting(adEnv, task, wait, dt)
|
||||
release(vehicle)
|
||||
return
|
||||
end
|
||||
-- Friske tal til evt. bytte og til tilbage-loggen — ikke dem fra da ventningen startede.
|
||||
wait.fillType, wait.rest = fillType, rest
|
||||
local free, capacity = ADSmartPickup.getTargetFreeCapacity(adEnv, vehicle, fillType)
|
||||
if free == nil or not ADSupplyPlanner.canUnloadRest(free, rest, capacity) then
|
||||
if ADLoadSwap ~= nil then
|
||||
|
||||
@@ -819,6 +819,18 @@ UnloadTask.update(st5, 16)
|
||||
UnloadTask.update(st5, ADLoadSwap.CHECK_INTERVAL_MS + 1)
|
||||
check("S5 én vare -> bliver", st5.destinationID, 40)
|
||||
|
||||
-- S6: efter bytte til siloen skal traktoren blive der (ikke sendes til et nyt Wait-punkt,
|
||||
-- fordi siloen fejlagtigt tolkes som "målet er fuldt")
|
||||
buildSwapWorld()
|
||||
local sv6, st6 = makeUnloadingVehicle("Fastrac Silo", 526, 5000, 35000)
|
||||
UnloadTask.update(st6, 16)
|
||||
UnloadTask.update(st6, ADLoadSwap.CHECK_INTERVAL_MS + 1)
|
||||
local mark6 = #logLines
|
||||
UnloadTask.update(st6, 16)
|
||||
UnloadTask.update(st6, 16)
|
||||
check("S6 bliver ved siloen efter bytte", st6.destinationID, 21)
|
||||
check("S6 ingen ny Wait-omdirigering", countLogsSince(mark6, "venter ved"), 0)
|
||||
|
||||
-- ==== E: eksponerede opslag (bruges af runs-controller og læs-bytte) ====
|
||||
local eDriver = buildCowWorld()
|
||||
check("E1 aflæsningsstation ved waypoint", ADSmartPickup.getUnloadStationAtWayPointId(FS25_AutoDrive, 30, 1), unloadStations[1])
|
||||
|
||||
Reference in New Issue
Block a user