fix(wait): fysisk optagede Wait-punkter springes over; feat(udkørsel): fodring — med 'Lager til' køres ved >= 10.000 l i kilden (v1.18.3.0)
This commit is contained in:
@@ -53,12 +53,36 @@ end
|
||||
|
||||
-- Nærmeste ledige (eller eget reserverede) Wait-punkt fra vognens position; isReachable(candidate)
|
||||
-- valgfri. nil uden position eller uden brugbart punkt. Reserverer IKKE selv.
|
||||
ADWaitPool.OCCUPIED_RADIUS = 6
|
||||
|
||||
-- Positioner for ANDRE motoriserede køretøjer (ikke vognen selv eller dens redskaber) — til at se om et
|
||||
-- Wait-punkt fysisk er optaget, også uden reservation (fx lige efter en omplanlægning).
|
||||
local function otherVehiclePositions(vehicle)
|
||||
local positions = {}
|
||||
local system = g_currentMission ~= nil and g_currentMission.vehicleSystem or nil
|
||||
local own = {}
|
||||
if vehicle.getChildVehicles ~= nil then
|
||||
local ok, children = pcall(vehicle.getChildVehicles, vehicle)
|
||||
for _, child in pairs(ok and children or {}) do own[child] = true end
|
||||
end
|
||||
own[vehicle] = true
|
||||
for _, other in pairs(system ~= nil and system.vehicles or {}) do
|
||||
if not own[other] and other.spec_motorized ~= nil and other.rootNode ~= nil then
|
||||
local ok, x, _, z = pcall(getWorldTranslation, other.rootNode)
|
||||
if ok and x ~= nil then table.insert(positions, {x = x, z = z}) end
|
||||
end
|
||||
end
|
||||
return positions
|
||||
end
|
||||
|
||||
function ADWaitPool.pickFree(adEnv, vehicle, poolGroup, isReachable)
|
||||
local x, z = getVehiclePosition(vehicle)
|
||||
if x == nil then
|
||||
return nil
|
||||
end
|
||||
return ADSupplyPlanner.pickNearestFreeWaitPoint(ADWaitPool.getCandidates(adEnv, poolGroup), ADWaitPool.claims, x, z, vehicle, isReachable)
|
||||
local candidates = ADWaitPool.getCandidates(adEnv, poolGroup)
|
||||
local occupied = ADSupplyPlanner.markOccupiedWaitPoints(candidates, otherVehiclePositions(vehicle), ADWaitPool.OCCUPIED_RADIUS)
|
||||
return ADSupplyPlanner.pickNearestFreeWaitPoint(candidates, ADWaitPool.claims, x, z, vehicle, isReachable, occupied)
|
||||
end
|
||||
|
||||
-- Ender ruten i målet? (AutoDrive returnerer tom/afkortet liste når der ingen vej er.)
|
||||
|
||||
Reference in New Issue
Block a user