feat(foder): parallelt foder (høns: korn 80 %/roesnitter 20 %) — gruppeandele af truget, ingen 'bedste foder først'-spærring (v1.19.7.0)
This commit is contained in:
@@ -323,3 +323,25 @@ function ADSupplyPlanner.findTriggerNodes(root, maxDepth)
|
||||
visit(root, 0)
|
||||
return nodes
|
||||
end
|
||||
|
||||
|
||||
-- Parallelt foder (animalFood consumptionType PARALLEL, fx høns): dyrene spiser fra alle grupper samtidig,
|
||||
-- så hver gruppe skal have sin andel af truget efter eatWeight. Returnerer gruppens niveau og kapacitet
|
||||
-- (trugets kapacitet × gruppens andel) for gruppen der indeholder fillType; nil hvis varen ikke er foder.
|
||||
function ADSupplyPlanner.parallelFoodShare(groups, fillLevels, capacity, fillType)
|
||||
local totalWeight = 0
|
||||
for _, group in ipairs(groups or {}) do totalWeight = totalWeight + (tonumber(group.eatWeight) or 0) end
|
||||
if totalWeight <= 0 then return nil end
|
||||
for _, group in ipairs(groups or {}) do
|
||||
local isMember = false
|
||||
for _, member in pairs(group.fillTypes or {}) do
|
||||
if member == fillType then isMember = true end
|
||||
end
|
||||
if isMember then
|
||||
local level = 0
|
||||
for _, member in pairs(group.fillTypes or {}) do level = level + ((fillLevels or {})[member] or 0) end
|
||||
return level, (capacity or 0) * (tonumber(group.eatWeight) or 0) / totalWeight
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user