fix(markarbejde): højst én maskine sendt ud hvert 10. sekund på tværs af markerne — 6 kørte fra parkeringen samtidig efter Start alle; marksilo-navn uden dobbelt F-nummer (v1.42.2.0)
This commit is contained in:
@@ -89,6 +89,19 @@ function ADFieldJobs.shouldResume(s)
|
||||
return type(s.distance) == "number" and s.distance <= ADFieldJobs.RESUME_NEAR_M
|
||||
end
|
||||
|
||||
-- Højst én maskine sendt ud pr. DISPATCH_GAP_MS på tværs af alle marker (in-game 27/9: 6 maskiner kørte fra
|
||||
-- parkeringen i samme sekund efter Start alle).
|
||||
ADFieldJobs.DISPATCH_GAP_MS = 10000
|
||||
function ADFieldJobs.mayDispatch(now, lastAt)
|
||||
return lastAt == nil or now - lastAt >= ADFieldJobs.DISPATCH_GAP_MS
|
||||
end
|
||||
|
||||
function ADFieldJobs.assignmentCount()
|
||||
local count = 0
|
||||
for _ in pairs(ADFieldJobs.state.assignments) do count = count + 1 end
|
||||
return count
|
||||
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.
|
||||
@@ -366,7 +379,11 @@ local function stepField(adEnv, info, env)
|
||||
ADFieldJobs.note(info.id, {reason = {key = key}})
|
||||
end
|
||||
elseif decision.action == "dispatch" then
|
||||
-- én udsendelse ad gangen på tværs af markerne: marken prøver igen ved næste tick
|
||||
if not ADFieldJobs.mayDispatch(ADFieldJobs.now, ADFieldJobs.lastDispatchAt) then return end
|
||||
local before = ADFieldJobs.assignmentCount()
|
||||
ADFieldWork.dispatch(adEnv, field, info, decision)
|
||||
if ADFieldJobs.assignmentCount() > before then ADFieldJobs.lastDispatchAt = ADFieldJobs.now end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user