diff --git a/FS25_ADSmartPickup/adFlowWagons.lua b/FS25_ADSmartPickup/adFlowWagons.lua index ca84931..57ccc60 100644 --- a/FS25_ADSmartPickup/adFlowWagons.lua +++ b/FS25_ADSmartPickup/adFlowWagons.lua @@ -89,6 +89,16 @@ function ADFlowWagons.missingBuildings(run, exists, seen) return missing end +-- Hvor læsset afleveres ved stop: AD's 2. markør kun hvis den er et af flowets mål — den kan være forældet +-- (gammel AD-tilstand) eller et Wait-punkt, Wait-logikken har skiftet til. Ellers flowets første mål; nil = silo. +function ADFlowWagons.emptyTarget(secondMarkerId, runTargetIds) + local targets = runTargetIds or {} + for _, id in ipairs(targets) do + if id == secondMarkerId then return id end + end + return targets[1] +end + -- Tøm vognen før den parkeres (flowet stoppet): flowets mål -> silo/egen fabrik -> hjem. -- stage: "start" | "target" | "dump"; s = {cargo, hasTarget, adActive, elapsedMs} -- -> "home" | "target" | "dump" | "wait" | "giveUp" @@ -337,7 +347,10 @@ function ADFlowWagons.homeVehicle(adEnv, vehicle, runName) ADHitch.cancel(vehicle) end local module = vehicle.ad ~= nil and vehicle.ad.stateModule or nil - local target = module ~= nil and module.getSecondMarker ~= nil and module:getSecondMarker() or nil + local second = module ~= nil and module.getSecondMarker ~= nil and module:getSecondMarker() or nil + local run = ADRunsController.getRunForVehicle(vehicle) + local targetId = ADFlowWagons.emptyTarget(second ~= nil and second.id or nil, run ~= nil and run.targetWayPointIds or nil) + local target = targetId ~= nil and adEnv.ADGraphManager:getMapMarkerByWayPointId(targetId) or nil local cargo, fillType = cargoOf(adEnv, vehicle) local action = ADFlowWagons.emptyStep("start", {cargo = cargo, hasTarget = target ~= nil}) if action == "home" then return goHome(adEnv, vehicle) end diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index b344582..9af3b3f 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.53.0.0 + 1.53.1.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adFlowWagons.lua b/tests/test_adFlowWagons.lua index dbf0e05..f2a68fb 100644 --- a/tests/test_adFlowWagons.lua +++ b/tests/test_adFlowWagons.lua @@ -82,5 +82,11 @@ check("genstart: tømmer -> afbryd", W.abortHomeTripOnStart({emptying = true}), check("genstart: flowets hjemtur -> afbryd", W.abortHomeTripOnStart({flowHoming = true}), true) check("genstart: puljens hjemtur (markarbejde) -> rør ikke", W.abortHomeTripOnStart({poolReturning = true}), false) check("genstart: intet i gang", W.abortHomeTripOnStart({}), false) +-- tøm-mål: kun flowets egne mål — AD's 2. markør kan være forældet (æg-markør) eller et Wait-punkt (in-game 29/9) +check("tøm-mål: AD's mål er et af flowets", W.emptyTarget(12638, {12636, 12638}), 12638) +check("tøm-mål: forældet/Wait-markør -> flowets første mål", W.emptyTarget(12658, {12636, 12638}), 12636) +check("tøm-mål: intet AD-mål -> flowets første", W.emptyTarget(nil, {12636}), 12636) +check("tøm-mål: flow uden mål -> intet (silo)", W.emptyTarget(12658, {}), nil) +check("tøm-mål: ingen liste -> intet", W.emptyTarget(12658, nil), nil) print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)