fix(stald): foder-trigger søges i spec_husbandryFood (feedingTrough findes ikke i FS25) når stationen er uden noder — hønsehus; diagnose-log af feltnavne (v1.19.4.0)
This commit is contained in:
@@ -296,3 +296,30 @@ function ADSupplyPlanner.resolveIngredients(state, selected)
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
-- Trigger-noder (exactFillRootNode/triggerNode) i indlejrede tabeller, fx en stalds foderdata hvor feltstien
|
||||
-- varierer mellem FS-versioner og mods (hønsehuset har kun foder-triggeren, ikke i aflæsningsstationen).
|
||||
-- Højst maxDepth niveauer (standard 3); løkker og placeable-referencer følges ikke.
|
||||
local SKIP_KEYS = {owningPlaceable = true, placeable = true, owner = true, parent = true, vehicle = true, target = true, mission = true}
|
||||
|
||||
function ADSupplyPlanner.findTriggerNodes(root, maxDepth)
|
||||
local nodes, seen = {}, {}
|
||||
local function visit(value, depth)
|
||||
if type(value) ~= "table" or seen[value] or depth > (maxDepth or 3) then
|
||||
return
|
||||
end
|
||||
seen[value] = true
|
||||
for _, field in ipairs({"exactFillRootNode", "triggerNode"}) do
|
||||
local node = rawget(value, field)
|
||||
if node ~= nil and type(node) ~= "boolean" then table.insert(nodes, node) end
|
||||
end
|
||||
for key, child in pairs(value) do
|
||||
if type(child) == "table" and not SKIP_KEYS[key] then
|
||||
visit(child, depth + 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
visit(root, 0)
|
||||
return nodes
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user