feat(udkørsel): 'Lager til' — tvunget aflæsningssted pr. flow (siloer/egne fabrikker; første med plads og vej), XML #storeBuildings (v1.18.0.0)
This commit is contained in:
@@ -179,7 +179,7 @@ local function findSellQuote(adEnv, vehicle, product, sellMarkers, sellAtPercent
|
||||
return quotes[1], nil
|
||||
end
|
||||
|
||||
local function findStoreMarker(adEnv, vehicle, product, capacity, sources, litersOverride)
|
||||
local function findStoreMarker(adEnv, vehicle, product, capacity, sources, litersOverride, run)
|
||||
local isReachable = function(markerId)
|
||||
return ADWaitPool.hasRouteTo(adEnv, vehicle, markerId)
|
||||
end
|
||||
@@ -200,6 +200,16 @@ local function findStoreMarker(adEnv, vehicle, product, capacity, sources, liter
|
||||
end
|
||||
end
|
||||
local liters = math.max(1, math.min(available, capacity or available))
|
||||
-- "Lager til" valgt i flowet: KUN de bygninger (fx gylle -> BGA, aldrig AIO-fabrikken)
|
||||
local forced = run ~= nil and ADRunsController ~= nil and ADRunsController.getStoreMarkers ~= nil and ADRunsController.getStoreMarkers(adEnv, run) or {}
|
||||
if #forced > 0 and ADLoadSwap.findForcedDumpMarker ~= nil then
|
||||
local chosen, why = ADLoadSwap.findForcedDumpMarker(adEnv, vehicle, product.fillType, liters, forced, isReachable)
|
||||
if chosen == nil then
|
||||
warnOnce(adEnv, vehicle, "forced:" .. tostring(product.name) .. ":" .. tostring(why), string.format("'%s': %s kan ikke læsses af — %s", tostring(ADRuns.vehicleLabel(vehicle)), tostring(product.name), tostring(why)))
|
||||
return nil
|
||||
end
|
||||
return {wayPointId = chosen.id, name = tostring(chosen.name), free = liters}
|
||||
end
|
||||
local avoid = ADRunsController ~= nil and ADRunsController.getPickupMarkers ~= nil and ADRunsController.getPickupMarkers() or nil
|
||||
local marker = ADLoadSwap.findDumpMarker(adEnv, vehicle, product.fillType, liters, nil, isReachable, ADSources.getSourcePlaceables(sources), avoid, true)
|
||||
if marker == nil then
|
||||
@@ -293,7 +303,7 @@ function ADOutbound.buildPlanInput(adEnv, run, vehicle)
|
||||
end
|
||||
end
|
||||
if wantsStore(product.policy) then
|
||||
product.store = findStoreMarker(adEnv, vehicle, product, capacity, sources)
|
||||
product.store = findStoreMarker(adEnv, vehicle, product, capacity, sources, nil, run)
|
||||
end
|
||||
end
|
||||
local input = {
|
||||
@@ -331,7 +341,7 @@ function ADOutbound.planCargoTarget(adEnv, run, vehicle, fillType, liters)
|
||||
end
|
||||
end
|
||||
if wantsStore(policy) then
|
||||
local store = findStoreMarker(adEnv, vehicle, product, capacity, sources, liters or capacity)
|
||||
local store = findStoreMarker(adEnv, vehicle, product, capacity, sources, liters or capacity, run)
|
||||
if store ~= nil then
|
||||
return store.wayPointId
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user