fix(flows): traktorer der ikke findes længere fjernes fra flowet 2 min efter indlæsning (ikke hvis alle mangler); resuméet viser aldrig rå køretøjs-id (v1.59.6.0)
This commit is contained in:
@@ -429,7 +429,13 @@ local SUMMARY = {
|
||||
local ids = guide.draft.vehicleIds
|
||||
if #ids == 0 then return {L("spu_guide_flow_sumNoTractors")} end
|
||||
if #ids > ADFlowGuide.MAX_NAMED_TRACTORS then return {L("spu_guide_flow_sumTractors", {#ids})} end
|
||||
return {T(table.concat(namesFor(ids, guide.context.vehicles, "label"), ", "))}
|
||||
-- traktorer der ikke findes (solgt, eller ikke indlæst endnu) vises ikke som rå id
|
||||
local known = {}
|
||||
for _, vehicle in ipairs(guide.context.vehicles or {}) do known[vehicle.id] = true end
|
||||
local present = {}
|
||||
for _, id in ipairs(ids) do if known[id] then table.insert(present, id) end end
|
||||
if #present == 0 then return {L("spu_guide_flow_sumNoTractors")} end
|
||||
return {T(table.concat(namesFor(present, guide.context.vehicles, "label"), ", "))}
|
||||
end,
|
||||
}
|
||||
|
||||
|
||||
@@ -626,6 +626,8 @@ function ADFlowWagons.tick(adEnv, dt)
|
||||
cleanedUp = true
|
||||
local ok, err = pcall(cleanupAfterLoad, adEnv)
|
||||
if not ok then Logging.warning(ADFlowWagons.LOG_PREFIX .. "oprydning efter indlæsning: %s", tostring(err)) end
|
||||
local okPrune, errPrune = pcall(ADRunsController.pruneMissingVehicles, adEnv)
|
||||
if not okPrune then Logging.warning(ADFlowWagons.LOG_PREFIX .. "oprydning af solgte traktorer: %s", tostring(errPrune)) end
|
||||
end
|
||||
end
|
||||
rememberTimer = rememberTimer + dt
|
||||
|
||||
@@ -344,6 +344,23 @@ function ADRuns.unassignVehicle(store, vehicleId)
|
||||
return new
|
||||
end
|
||||
|
||||
-- Traktorer der ikke findes længere (solgt/byttet) fjernes fra deres flow. exists(vehicleId) -> bool.
|
||||
-- Mangler ALLE flowenes traktorer, er indlæsningen nok ikke færdig/gået galt: intet fjernes.
|
||||
-- -> ny store, {{runName, vehicleId}} over de fjernede
|
||||
function ADRuns.pruneMissingVehicles(store, exists)
|
||||
local missing, total = {}, 0
|
||||
for _, run in ipairs(store.runs) do
|
||||
for _, id in ipairs(run.vehicleIds) do
|
||||
total = total + 1
|
||||
if not exists(id) then table.insert(missing, {runName = run.name, vehicleId = id}) end
|
||||
end
|
||||
end
|
||||
if #missing == 0 or #missing == total then return store, {} end
|
||||
local new = store
|
||||
for _, entry in ipairs(missing) do new = ADRuns.unassignVehicle(new, entry.vehicleId) end
|
||||
return new, missing
|
||||
end
|
||||
|
||||
-- En traktor er kun i ét run. Returnerer ny store + id på det run den blev flyttet FRA (nil = ingen).
|
||||
function ADRuns.assignVehicle(store, runId, vehicleId)
|
||||
local previous = ADRuns.findRunByVehicle(store, vehicleId)
|
||||
|
||||
@@ -1502,6 +1502,19 @@ function ADRunsController.load(adEnv)
|
||||
end
|
||||
end
|
||||
|
||||
-- Én gang efter indlæsning (køretøjerne er klar): traktorer der ikke findes længere fjernes fra flowene.
|
||||
function ADRunsController.pruneMissingVehicles(adEnv)
|
||||
local vehiclesById = getFarmVehiclesById(adEnv)
|
||||
if next(vehiclesById) == nil then return end
|
||||
local store, removed = ADRuns.pruneMissingVehicles(ADRunsController.store, function(id) return vehiclesById[id] ~= nil end)
|
||||
if #removed == 0 then return end
|
||||
ADRunsController.store = store
|
||||
for _, entry in ipairs(removed) do
|
||||
Logging.info(ADRunsController.LOG_PREFIX .. "run '%s': køretøj %s findes ikke længere — fjernet fra flowet", tostring(entry.runName), tostring(entry.vehicleId))
|
||||
end
|
||||
ADRunsController.save()
|
||||
end
|
||||
|
||||
function ADRunsController.installSaveHook()
|
||||
if ItemSystem == nil or ItemSystem.save == nil or Utils == nil then
|
||||
return
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<modDesc descVersion="107">
|
||||
<author>masterdraco</author>
|
||||
<version>1.59.5.0</version>
|
||||
<version>1.59.6.0</version>
|
||||
<title>
|
||||
<en>AD Smart Pickup</en>
|
||||
</title>
|
||||
|
||||
Reference in New Issue
Block a user