feat(kæde): læs i køretøjer tæller som lager, ingen skift under høst, varelinje åbner flow (v1.61.8.0)

This commit is contained in:
2026-09-30 18:03:56 +02:00
parent 2290bdde95
commit 47afdebf64
9 changed files with 70 additions and 6 deletions
+36 -1
View File
@@ -267,6 +267,38 @@ local function readFieldGoods(data, nameOf)
end
end
-- Læs i gårdens køretøjer (vogne, høstertanke, marksilo-vogne) tæller som lager: kun afgrøder og markvarer, ikke
-- diesel o.l. loads = {{name, liters}} (in-game 30/9: høst på vej hjem gav falsk mangel og forslag).
function ADChainData.addVehicleLoads(data, loads)
for _, load in ipairs(loads or {}) do
local name, liters = load.name, load.liters or 0
local fruit = name ~= nil and (data.crops or {})[name] or nil
if liters > 0 and (fruit ~= nil or (data.fieldGoods or {})[name]) then
data.stockByFill[name] = (data.stockByFill[name] or 0) + liters
if fruit ~= nil then data.stock[fruit] = (data.stock[fruit] or 0) + liters end
end
end
end
local function readVehicleLoads(data, farmId, nameOf)
local ok, err = pcall(function()
local loads = {}
for _, vehicle in pairs(g_currentMission.vehicleSystem.vehicles or {}) do
local spec = vehicle.spec_fillUnit
if spec ~= nil and vehicle.getOwnerFarmId ~= nil and vehicle:getOwnerFarmId() == farmId then
for index, unit in ipairs(spec.fillUnits or {}) do
local level = vehicle:getFillUnitFillLevel(index) or 0
if level > 0 then
table.insert(loads, {name = nameOf(vehicle:getFillUnitFillType(index) or unit.fillType), liters = level})
end
end
end
end
ADChainData.addVehicleLoads(data, loads)
end)
if not ok then ADChainData.warnOnce("vehicleLoads", "læs i køretøjer kunne ikke læses: %s", tostring(err)) end
end
local function readStock(data, adEnv, farmId, nameOf)
local ok, err = pcall(function()
for index, liters in pairs(ADStorageStats.farmTotals(ADSources.getFarmInventory(adEnv, farmId))) do
@@ -324,6 +356,8 @@ local function readFields(data)
local field = ADFieldJobs.getField(info.id)
local plan = field.plan or {}
local fruit = info.growing and info.fruitName or field.lastFruit
-- høst i gang: ingen forslag/skift for afgrøden, mens læssene er på vej hjem
if field.stage == "harvesting" and info.fruitName ~= nil then data.harvesting[info.fruitName] = true end
return {id = info.id, areaHa = ADFields.polygonAreaHa(info.verts), fruit = fruit,
targetFruit = plan.targetFruit, targetSource = plan.targetSource, chainFree = plan.chainFree == true,
permanent = ADChainData.isPermanent(info.fruitName or field.lastFruit), excluded = info.kind == "mowable"}
@@ -439,13 +473,14 @@ end
-- ikke har nået alle marker.
function ADChainData.collect(adEnv, farmId, byChain)
local data = {recipes = {}, husbandry = {}, crops = {}, stock = {}, fields = {}, yields = {}, fruitFillIndex = {},
usedFruits = {}, points = {}, fillTitles = {}, fillIndex = {}, placeables = {}, barnFood = {}, stockByFill = {}, rates = {}, fieldGoods = {}}
usedFruits = {}, points = {}, fillTitles = {}, fillIndex = {}, placeables = {}, barnFood = {}, stockByFill = {}, rates = {}, fieldGoods = {}, harvesting = {}}
local nameOf = nameResolver(data)
data.priceOf = priceResolver(data)
readPlaceables(data, farmId, byChain, nameOf)
readCrops(data, nameOf)
readFieldGoods(data, nameOf)
readStock(data, adEnv, farmId, nameOf)
readVehicleLoads(data, farmId, nameOf)
readRates(data, adEnv, farmId, nameOf)
readUsedFruits(data, adEnv, farmId, nameOf)
readFields(data)