fix: AutoDrive tælles ikke som Courseplay (flow-traktor med AD aktiv ventede på sig selv ved Start efter indlæsning); venteårsag logges kun ved ændring (v1.57.4.0)
This commit is contained in:
@@ -377,8 +377,12 @@ function ADCpBridge.getWorkWidth(vehicle)
|
|||||||
return best
|
return best
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- AutoDrive kører også som AI-job i FS25: aktiv AD er ikke Courseplay (in-game 29/9: Milk Store ved Cow Wait
|
||||||
|
-- med AD aktiv blev meldt 'Courseplay kører' og ventede på sig selv).
|
||||||
function ADCpBridge.isWorking(vehicle)
|
function ADCpBridge.isWorking(vehicle)
|
||||||
if vehicle.getIsCpFieldWorkActive ~= nil and vehicle:getIsCpFieldWorkActive() then return true end
|
if vehicle.getIsCpFieldWorkActive ~= nil and vehicle:getIsCpFieldWorkActive() then return true end
|
||||||
|
local module = vehicle.ad ~= nil and vehicle.ad.stateModule or nil
|
||||||
|
if module ~= nil and module.isActive ~= nil and module:isActive() then return false end
|
||||||
return vehicle.getIsAIActive ~= nil and vehicle:getIsAIActive() or false
|
return vehicle.getIsAIActive ~= nil and vehicle:getIsAIActive() or false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ local fetching = setmetatable({}, {__mode = "k"}) -- traktor -> runId (henter s
|
|||||||
local emptying = setmetatable({}, {__mode = "k"}) -- traktor -> {stage, since, fillType, runName}
|
local emptying = setmetatable({}, {__mode = "k"}) -- traktor -> {stage, since, fillType, runName}
|
||||||
local homing = setmetatable({}, {__mode = "k"}) -- traktor -> true (flowets hjemtur: vogn af, traktor hjem)
|
local homing = setmetatable({}, {__mode = "k"}) -- traktor -> true (flowets hjemtur: vogn af, traktor hjem)
|
||||||
local fetchRetries = setmetatable({}, {__mode = "k"}) -- traktor -> antal nye hente-forsøg
|
local fetchRetries = setmetatable({}, {__mode = "k"}) -- traktor -> antal nye hente-forsøg
|
||||||
|
local lastWaitText = setmetatable({}, {__mode = "k"}) -- traktor -> sidst loggede venteårsag (kun ændringer logges)
|
||||||
local missingCount = {} -- runId -> tjek i træk
|
local missingCount = {} -- runId -> tjek i træk
|
||||||
local seenBuildings = {} -- bygnings-id'er set i denne session
|
local seenBuildings = {} -- bygnings-id'er set i denne session
|
||||||
local rememberTimer, buildingTimer = 0, 0
|
local rememberTimer, buildingTimer = 0, 0
|
||||||
@@ -296,20 +297,22 @@ function ADFlowWagons.beforeStart(adEnv, run, vehicle)
|
|||||||
wagonBusy = wagonId ~= nil and ADPool.isReserved(wagonId),
|
wagonBusy = wagonId ~= nil and ADPool.isReserved(wagonId),
|
||||||
}
|
}
|
||||||
local action = ADFlowWagons.startAction(startState)
|
local action = ADFlowWagons.startAction(startState)
|
||||||
if action == "start" then return false end
|
if action == "start" then lastWaitText[vehicle] = nil return false end
|
||||||
ADRunsController.runningRuns[run.id] = true
|
ADRunsController.runningRuns[run.id] = true
|
||||||
if action == "wait" then
|
if action == "wait" then
|
||||||
if waiting[vehicle] == nil then
|
local holder = wagon ~= nil and wagon.getAttacherVehicle ~= nil and wagon:getAttacherVehicle() or nil
|
||||||
local holder = wagon ~= nil and wagon.getAttacherVehicle ~= nil and wagon:getAttacherVehicle() or nil
|
local waitText = ADFlowWagons.waitReason(startState) .. ": " .. (startState.tractorBusy and ADFlowWagons.busyWhy(vehicle, tractorId)
|
||||||
Logging.info(ADFlowWagons.LOG_PREFIX .. "flow '%s': '%s' venter på sin vogn (%s: %s)", tostring(run.name),
|
or (holder ~= nil and ("sidder på " .. tostring(ADRuns.vehicleLabel(holder)))) or "reserveret af puljen")
|
||||||
tostring(ADRuns.vehicleLabel(vehicle)), ADFlowWagons.waitReason(startState),
|
if lastWaitText[vehicle] ~= waitText then
|
||||||
startState.tractorBusy and ADFlowWagons.busyWhy(vehicle, tractorId)
|
lastWaitText[vehicle] = waitText
|
||||||
or (holder ~= nil and ("sidder på " .. tostring(ADRuns.vehicleLabel(holder)))) or "reserveret af puljen")
|
Logging.info(ADFlowWagons.LOG_PREFIX .. "flow '%s': '%s' venter på sin vogn (%s)", tostring(run.name),
|
||||||
|
tostring(ADRuns.vehicleLabel(vehicle)), waitText)
|
||||||
end
|
end
|
||||||
waiting[vehicle] = run.id
|
waiting[vehicle] = run.id
|
||||||
return true, {vehicle = vehicle, ok = true, reason = "waitingWagon"}
|
return true, {vehicle = vehicle, ok = true, reason = "waitingWagon"}
|
||||||
end
|
end
|
||||||
waiting[vehicle] = nil
|
waiting[vehicle] = nil
|
||||||
|
lastWaitText[vehicle] = nil
|
||||||
fetching[vehicle] = run.id
|
fetching[vehicle] = run.id
|
||||||
local runId = run.id
|
local runId = run.id
|
||||||
local okFetch, errFetch = pcall(ADHitch.fetch, adEnv, vehicle, connectId, function(tractor, ok, detail)
|
local okFetch, errFetch = pcall(ADHitch.fetch, adEnv, vehicle, connectId, function(tractor, ok, detail)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<modDesc descVersion="107">
|
<modDesc descVersion="107">
|
||||||
<author>masterdraco</author>
|
<author>masterdraco</author>
|
||||||
<version>1.57.3.0</version>
|
<version>1.57.4.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
|
|||||||
@@ -164,5 +164,15 @@ check("forager i kursus: 2 runder", ADCpBridge.courseHasHeadlands({getNumberOfHe
|
|||||||
check("forager i kursus: ingen", ADCpBridge.courseHasHeadlands({getNumberOfHeadlands = function() return 0 end}), false)
|
check("forager i kursus: ingen", ADCpBridge.courseHasHeadlands({getNumberOfHeadlands = function() return 0 end}), false)
|
||||||
check("forager i kursus: ukendt -> antag ja", ADCpBridge.courseHasHeadlands({}), true)
|
check("forager i kursus: ukendt -> antag ja", ADCpBridge.courseHasHeadlands({}), true)
|
||||||
check("forager i kursus: intet kursus", ADCpBridge.courseHasHeadlands(nil), false)
|
check("forager i kursus: intet kursus", ADCpBridge.courseHasHeadlands(nil), false)
|
||||||
|
-- isWorking: AutoDrive kører også som AI i FS25 — det er ikke Courseplay (in-game 29/9: Milk Store holdt ved
|
||||||
|
-- Cow Wait med AD aktiv og "ventede på sig selv" som 'Courseplay kører')
|
||||||
|
local function fakeVehicle(cp, ai, ad)
|
||||||
|
return {getIsCpFieldWorkActive = function() return cp end, getIsAIActive = function() return ai end,
|
||||||
|
ad = {stateModule = {isActive = function() return ad end}}}
|
||||||
|
end
|
||||||
|
check("CP arbejder: Courseplay markarbejde", ADCpBridge.isWorking(fakeVehicle(true, true, false)), true)
|
||||||
|
check("CP arbejder: AI uden AD (CP-kørsel)", ADCpBridge.isWorking(fakeVehicle(false, true, false)), true)
|
||||||
|
check("CP arbejder: AutoDrive kører -> ikke CP", ADCpBridge.isWorking(fakeVehicle(false, true, true)), false)
|
||||||
|
check("CP arbejder: intet", ADCpBridge.isWorking(fakeVehicle(false, false, false)), false)
|
||||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||||
os.exit(failures == 0 and 0 or 1)
|
os.exit(failures == 0 and 0 or 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user