fix(markarbejde): vent op til 5 min mens Courseplay beregner kursus (store marker) i stedet for at opgive efter 60 s — F90 (140 ha) blev opgivet midt i beregningen (v1.42.4.0)
This commit is contained in:
@@ -550,7 +550,10 @@ function ADCpBridge.start(vehicle, fieldX, fieldZ, onDone, opts)
|
||||
Logging.warning("ADSmartPickup: kunne ikke kopiere kursus: %s — laver nyt", tostring(copyError))
|
||||
end
|
||||
setMultiTools(vehicle, opts.multiTools or 1)
|
||||
-- kursusberegningen kører over mange frames på store marker: moden venter længere imens
|
||||
handle.generating = true
|
||||
job:onClickGenerateFieldWorkCourse(function(generated)
|
||||
handle.generating = false
|
||||
if handle.cancelled then return end
|
||||
if not generated then return finish(false, "Courseplay kunne ikke lave kursus") end
|
||||
startWithCourse()
|
||||
|
||||
@@ -108,6 +108,14 @@ function ADFieldJobs.assignmentCount()
|
||||
return count
|
||||
end
|
||||
|
||||
-- Har Courseplay-starten taget for lang tid? Mens CP beregner kursus (store marker), må det tage op til
|
||||
-- COURSE_GENERATE_MS; ellers START_MS (in-game 27/9 F90: 140 ha tog over 60 s, og moden opgav midt i beregningen).
|
||||
ADFieldJobs.START_MS = 60000
|
||||
ADFieldJobs.COURSE_GENERATE_MS = 300000
|
||||
function ADFieldJobs.startTimedOut(elapsed, generating)
|
||||
return elapsed > (generating and ADFieldJobs.COURSE_GENERATE_MS or ADFieldJobs.START_MS)
|
||||
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.
|
||||
|
||||
@@ -1068,9 +1068,10 @@ function ADFieldWork.follow(adEnv, assignment)
|
||||
beginWork(adEnv, field, info, assignment)
|
||||
end
|
||||
elseif assignment.phase == "starting" then
|
||||
if now() - assignment.since > ADFieldWork.START_TIMEOUT_MS then
|
||||
local generating = assignment.handle ~= nil and assignment.handle.generating == true
|
||||
if ADFieldJobs.startTimedOut(now() - assignment.since, generating) then
|
||||
ADFieldWork.release(assignment)
|
||||
fail(assignment.fieldId, "Courseplay svarede ikke (60 s)")
|
||||
fail(assignment.fieldId, generating and "Courseplay blev ikke færdig med kurset (5 min)" or "Courseplay svarede ikke (60 s)")
|
||||
end
|
||||
elseif assignment.phase == "working" then
|
||||
followWorking(adEnv, field, assignment)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<modDesc descVersion="107">
|
||||
<author>masterdraco</author>
|
||||
<version>1.42.3.0</version>
|
||||
<version>1.42.4.0</version>
|
||||
<title>
|
||||
<en>AD Smart Pickup</en>
|
||||
</title>
|
||||
|
||||
@@ -170,5 +170,12 @@ do
|
||||
check("HH klargøring med halv mark stående -> spol tilbage", J.decide(cultivating, halfInfo, {}, 0).action, "rewind")
|
||||
end
|
||||
|
||||
|
||||
-- startTimedOut: CP må beregne kursus i op til 5 min (in-game 27/9 F90: 140 ha tog over 60 s, moden opgav midt i)
|
||||
check("ST start uden beregning > 60 s -> opgiv", ADFieldJobs.startTimedOut(61000, false), true)
|
||||
check("ST beregner stadig efter 90 s -> vent", ADFieldJobs.startTimedOut(90000, true), false)
|
||||
check("ST beregner over 5 min -> opgiv", ADFieldJobs.startTimedOut(301000, true), true)
|
||||
check("ST under 60 s -> vent", ADFieldJobs.startTimedOut(30000, false), false)
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
Reference in New Issue
Block a user