fix(markarbejde): CP får markens punkt nærmest traktoren som position (kursets startsted) — F17-kurset startede 280 m væk, og kultivatoren kørte gennem skoven (v1.43.1.0)
This commit is contained in:
@@ -123,6 +123,18 @@ function ADFieldJobs.shouldEmptyHarvester(s)
|
||||
return (s.fill or 0) > 0 and s.near == true and not s.busy and not s.controlled and not s.tried
|
||||
end
|
||||
|
||||
-- Markens punkt nærmest (x, z) — CP bruger det som kursets startsted. Uden position: første punkt.
|
||||
function ADFieldJobs.nearestPoint(points, x, z)
|
||||
if points == nil or points[1] == nil then return nil end
|
||||
if x == nil or z == nil then return points[1] end
|
||||
local best, bestD = nil, nil
|
||||
for _, point in ipairs(points) do
|
||||
local d = (point.x - x) ^ 2 + (point.z - z) ^ 2
|
||||
if bestD == nil or d < bestD then best, bestD = point, d end
|
||||
end
|
||||
return best
|
||||
end
|
||||
|
||||
-- Beslutning for én mark. assignments = sæt på marken ({phase, stage, helper}); kun sæt på det aktuelle
|
||||
-- trin tæller (en aflæsningsvogn på vej hjem fra høsten forstyrrer ikke kultiveringen).
|
||||
-- env = {raining = bool}: vejrfølsomme trin (høst/slå/vend/riv/hø) sendes ikke ud i regn.
|
||||
|
||||
@@ -630,7 +630,9 @@ local function beginUnloader(adEnv, field, info, assignment)
|
||||
assignment.storeId = store.id
|
||||
local station = ADSmartPickup.getUnloadStationAtWayPointId(adEnv, store.id, vehicle:getOwnerFarmId())
|
||||
local markerPoint = adEnv.ADGraphManager:getWayPointById(info.markerId)
|
||||
local point = info.points[1] or {x = info.x, z = info.z}
|
||||
-- punktet nærmest traktoren: CP lægger kursets start dér (ikke i den anden ende af marken)
|
||||
local vx, vz = vehiclePosition(assignment.vehicle)
|
||||
local point = ADFieldJobs.nearestPoint(info.points, vx, vz) or {x = info.x, z = info.z}
|
||||
assignment.phase = "starting"
|
||||
assignment.since = now()
|
||||
local handle, err = ADCpBridge.startUnloader(vehicle, point.x, point.z, markerPoint ~= nil and markerPoint.x or point.x,
|
||||
@@ -676,7 +678,9 @@ local function beginBaleCollector(adEnv, field, info, assignment)
|
||||
else
|
||||
log(field.id, "intet ballelager med plads og vej fundet — ballesamleren stopper når den er fuld")
|
||||
end
|
||||
local point = info.points[1] or {x = info.x, z = info.z}
|
||||
-- punktet nærmest traktoren: CP lægger kursets start dér (ikke i den anden ende af marken)
|
||||
local vx, vz = vehiclePosition(assignment.vehicle)
|
||||
local point = ADFieldJobs.nearestPoint(info.points, vx, vz) or {x = info.x, z = info.z}
|
||||
assignment.phase = "starting"
|
||||
assignment.since = now()
|
||||
local handle, err = ADCpBridge.startBaleFinder(vehicle, point.x, point.z, function(ok, reason)
|
||||
@@ -778,7 +782,9 @@ local function beginWork(adEnv, field, info, assignment)
|
||||
math.abs(field.windrowOffset), field.windrowOffset > 0 and "til venstre" or "til højre", target, own)
|
||||
end
|
||||
end
|
||||
local point = info.points[1] or {x = info.x, z = info.z}
|
||||
-- punktet nærmest traktoren: CP lægger kursets start dér (ikke i den anden ende af marken)
|
||||
local vx, vz = vehiclePosition(assignment.vehicle)
|
||||
local point = ADFieldJobs.nearestPoint(info.points, vx, vz) or {x = info.x, z = info.z}
|
||||
-- genbrug af Courseplay-kurser: maskinens eget / en andens matchende kursus frem for ny beregning
|
||||
local cacheContext
|
||||
opts, cacheContext = ADCourseCache.prepare(adEnv, field, info, assignment, opts)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<modDesc descVersion="107">
|
||||
<author>masterdraco</author>
|
||||
<version>1.43.0.0</version>
|
||||
<version>1.43.1.0</version>
|
||||
<title>
|
||||
<en>AD Smart Pickup</en>
|
||||
</title>
|
||||
|
||||
Reference in New Issue
Block a user