feat: advarsel når et lagermål har en nabo-aflæsningsmarkør inden for AD's 'Max trigger distance' (v1.12.13.0)
This commit is contained in:
@@ -339,6 +339,36 @@ local function applyTrip(adEnv, vehicle, run, trip, sourcesById)
|
||||
Logging.info(ADOutbound.LOG_PREFIX .. "'%s' udkørsel: %s fra %s → %s (%s)", tostring(vehicle:getName()), table.concat(names, "+"), table.concat(sourceNames, ", "), tostring(trip.targetName), why)
|
||||
end
|
||||
|
||||
-- Lagermål i en tæt silorække: AutoDrive tipper ved den FØRSTE aflæsningstrigger inden for sin
|
||||
-- globale "Max trigger distance" (standard 25 m) — nabosiloen kan så få læsset. Kan ikke sættes pr.
|
||||
-- køretøj, så der advares én gang pr. mål, og brugeren sætter AD-indstillingen til 10 m.
|
||||
local warnedTriggerDistance = {}
|
||||
local function warnDenseSilosOnce(adEnv, vehicle, trip)
|
||||
if trip.kind ~= "store" or adEnv.AutoDrive.getSetting == nil or warnedTriggerDistance[trip.targetWayPointId] then
|
||||
return
|
||||
end
|
||||
local ok, distance = pcall(adEnv.AutoDrive.getSetting, "maxTriggerDistance")
|
||||
if not ok or type(distance) ~= "number" or distance <= 10 then
|
||||
return
|
||||
end
|
||||
local target = adEnv.ADGraphManager:getWayPointById(trip.targetWayPointId)
|
||||
if target == nil then
|
||||
return
|
||||
end
|
||||
local farmId = ADSmartPickup.getFarmId(vehicle)
|
||||
for _, marker in pairs(adEnv.ADGraphManager:getMapMarkers()) do
|
||||
if marker.id ~= trip.targetWayPointId then
|
||||
local wayPoint = adEnv.ADGraphManager:getWayPointById(marker.id)
|
||||
local dx, dz = wayPoint ~= nil and (wayPoint.x - target.x) or math.huge, wayPoint ~= nil and (wayPoint.z - target.z) or math.huge
|
||||
if dx * dx + dz * dz <= distance * distance and ADSmartPickup.getUnloadStationAtWayPointId(adEnv, marker.id, farmId) ~= nil then
|
||||
warnedTriggerDistance[trip.targetWayPointId] = true
|
||||
Logging.warning(ADOutbound.LOG_PREFIX .. "'%s': målet %s har en anden aflæsningsmarkør (%s) inden for AutoDrives 'Max trigger distance' (%d m) — AutoDrive kan tippe ved nabosiloen; sæt AD-indstillingen til 10 m", tostring(vehicle:getName()), tostring(trip.targetName), tostring(marker.name), distance)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function releaseHold(vehicle)
|
||||
if holds[vehicle] ~= nil then
|
||||
ADWaitPool.releaseVehicle(vehicle)
|
||||
@@ -397,6 +427,7 @@ function ADOutbound.choosePickup(adEnv, vehicle)
|
||||
releaseHold(vehicle)
|
||||
runStatus.warning = nil
|
||||
applyTrip(adEnv, vehicle, run, trip, sourcesById)
|
||||
pcall(warnDenseSilosOnce, adEnv, vehicle, trip)
|
||||
-- Prisgrundlaget logges, så det kan holdes op mod spillets Priser-menu (I5 i review).
|
||||
if trip.kind == "sell" then
|
||||
for _, product in ipairs(input.products) do
|
||||
|
||||
Reference in New Issue
Block a user