feat(markarbejde): høsten er færdig men høsteren har korn i tanken -> CP genstartes og venter ved kursets ende, tømmevogn sendes ud, marken går først videre når tanken er tom (én gang pr. mark) (v1.43.0.0)

This commit is contained in:
2026-09-27 19:57:43 +02:00
parent 521dc10df5
commit 5bb1ad6ae0
4 changed files with 54 additions and 1 deletions
+30
View File
@@ -1019,6 +1019,36 @@ function ADFieldWork.autoNameFleet(adEnv)
end
end
-- Høsten er færdig, men den høster der høstede marken har korn i tanken og står ved marken: start dens CP-job igen
-- (sidste/nærmeste punkt), så CP venter ved kursets ende til tømmevognene har tømt den. Én gang pr. mark.
function ADFieldWork.tryEmptyHarvester(adEnv, field, info)
local vehicleId = field.harvestVehicleId
if vehicleId == nil or info == nil then return false end
local rig = nil
for _, candidate in ipairs(ADFieldWork.getRigs(adEnv)) do
if candidate.id == vehicleId then rig = candidate break end
end
if rig == nil then return false end
local fill = restLoad(adEnv, rig.vehicle)
local near = #(info.verts or {}) >= 3 and ADFieldJobs.insidePolygon(rig.x, rig.z, info.verts)
if not near and info.markerId ~= nil then
local wayPoint = adEnv.ADGraphManager:getWayPointById(info.markerId)
near = wayPoint ~= nil and math.sqrt((wayPoint.x - rig.x) ^ 2 + (wayPoint.z - rig.z) ^ 2) <= 100
end
if not ADFieldJobs.shouldEmptyHarvester({fill = fill, near = near, busy = rig.busy, controlled = rig.controlled,
tried = ADFieldJobs.emptyAttempts[field.id] == true}) then
return false
end
ADFieldJobs.emptyAttempts[field.id] = true
local assignment = {vehicleId = rig.id, vehicle = rig.vehicle, fieldId = field.id, role = "harvester", stage = field.stage,
helper = false, phase = "driving", since = now(), width = rig.width, groupSize = 1, leader = true,
manual = rig.manual == true, emptying = true}
ADFieldJobs.state.assignments[rig.id] = assignment
log(field.id, "høsten er færdig, men '%s' har %.0f l i tanken — tømmes på marken, før marken går videre", tostring(rig.label), fill)
beginWork(adEnv, field, info, assignment)
return true
end
function ADFieldWork.follow(adEnv, assignment)
local vehicle = assignment.vehicle
-- Kun når spilleren selv KØRER (bevæger sig uden Courseplay/AutoDrive) slippes sættet — at sidde i