feat(pulje): etape 2 — tømmevogne ved høst fra puljen: ledig traktor henter en puljevogn der kan bære afgrøden, følger høsteren til høsten er færdig, sætter vognen af og kører hjem (v1.49.0.0)
This commit is contained in:
@@ -391,7 +391,7 @@ end
|
||||
|
||||
-- Puljekombination: nærmeste puljeredskab til marken + nærmeste ledige traktor med nok hk. Traktoren kører til
|
||||
-- "Connect X", kobler på og fortsætter så som en almindelig udsendelse (fase fetching -> driving).
|
||||
function ADFieldWork.dispatchPool(adEnv, field, info, role, roleAccept)
|
||||
function ADFieldWork.dispatchPool(adEnv, field, info, role, roleAccept, decision)
|
||||
local implements, tractors = ADPool.collect(adEnv, function(vehicle)
|
||||
return isBusyVehicle(vehicle, ADRunsController.getVehicleId(vehicle))
|
||||
end)
|
||||
@@ -404,6 +404,8 @@ function ADFieldWork.dispatchPool(adEnv, field, info, role, roleAccept)
|
||||
end
|
||||
if role == "weeder" then candidate.mechanical = ADCpBridge.isMechanicalWeeder(implement.vehicle) end
|
||||
if roleAccept ~= nil and not roleAccept(candidate) then return false end
|
||||
-- tømmevogn: skal kunne bære høstens vare
|
||||
if role == "unloader" and not ADPool.canCarry(implement, info.harvestFillType) then return false end
|
||||
local required = ADFieldModel.requiredWidth(field, role)
|
||||
return (implement.width or 0) <= 0 or ADFieldModel.checkWidth(role, implement.width, required)
|
||||
end
|
||||
@@ -412,7 +414,8 @@ function ADFieldWork.dispatchPool(adEnv, field, info, role, roleAccept)
|
||||
local tractor, implement = pair.tractor, pair.implement
|
||||
local assignment = {
|
||||
vehicleId = tractor.id, vehicle = tractor.vehicle, fieldId = field.id, role = role, stage = field.stage,
|
||||
helper = false, phase = "fetching", since = now(), width = implement.width, groupSize = 1, leader = true,
|
||||
helper = decision ~= nil and decision.helper == true, phase = "fetching", since = now(), width = implement.width,
|
||||
groupSize = 1, leader = true, fillType = decision ~= nil and decision.helper and info.harvestFillType or nil,
|
||||
startX = tractor.x, startZ = tractor.z,
|
||||
pool = {implementId = implement.id, implementName = implement.name, connectId = implement.connectId},
|
||||
hitch = {done = false},
|
||||
@@ -444,6 +447,8 @@ function ADFieldWork.dispatch(adEnv, field, info, decision)
|
||||
local offNetwork = {}
|
||||
local accept = function(candidate)
|
||||
if roleAccept ~= nil and not roleAccept(candidate) then return false end
|
||||
-- tømmevogn: skal kunne bære høstens vare
|
||||
if role == "unloader" and not ADPool.canCarry(implement, info.harvestFillType) then return false end
|
||||
-- manuel transport: spilleren kører den — afstand til AutoDrive-vejnettet er ligegyldig
|
||||
if role == "harvester" and candidate.manual then return true end
|
||||
local d = candidate.x ~= nil and ADFieldWork.distanceToNetwork(adEnv, candidate.x, candidate.z) or nil
|
||||
@@ -471,7 +476,7 @@ function ADFieldWork.dispatch(adEnv, field, info, decision)
|
||||
end
|
||||
if ADPool ~= nil and ADPool.mayUsePool(decision, hasOwnForRole)
|
||||
and (why == "noRig" or why == "allBusy" or why == "cannotDo") then
|
||||
local pooled, poolWhy, poolArgs = ADFieldWork.dispatchPool(adEnv, field, info, role, roleAccept)
|
||||
local pooled, poolWhy, poolArgs = ADFieldWork.dispatchPool(adEnv, field, info, role, roleAccept, decision)
|
||||
if pooled then return end
|
||||
if poolWhy == "tooWeak" then
|
||||
note(field.id, {reason = {text = string.format("ingen ledig traktor med ≥%.0f hk til '%s'",
|
||||
|
||||
Reference in New Issue
Block a user