feat: læs på vej tælles med — flere traktorer til samme stald fordeler sig på varer og stalde (v1.14.1.0)
This commit is contained in:
@@ -210,6 +210,37 @@ function ADSupplyPlanner.rankNeeds(needs, loadCapacity)
|
||||
return ranked
|
||||
end
|
||||
|
||||
-- ---- læs på vej ----
|
||||
-- pending = {[fillType] = liter} som ANDRE traktorer allerede er på vej med til samme mål.
|
||||
-- Almindelige lagre: niveau + på vej (højst kapaciteten). Foder i et fælles trug (scoreOverride +
|
||||
-- troughCapacity): varens niveau stiger, og trugets fri plads falder med ALT foder på vej.
|
||||
-- Returnerer NY liste; input røres ikke.
|
||||
function ADSupplyPlanner.applyPending(needs, pending)
|
||||
local troughPending = 0
|
||||
for _, need in ipairs(needs) do
|
||||
if need.scoreOverride ~= nil and pending[need.fillType] ~= nil then
|
||||
troughPending = troughPending + pending[need.fillType]
|
||||
end
|
||||
end
|
||||
local result = {}
|
||||
for index, need in ipairs(needs) do
|
||||
local copy = {}
|
||||
for key, value in pairs(need) do copy[key] = value end
|
||||
local extra = pending[need.fillType] or 0
|
||||
if need.scoreOverride ~= nil and troughPending > 0 then
|
||||
local free = math.max(0, (need.capacity - need.level) - troughPending)
|
||||
copy.level = need.level + extra
|
||||
copy.capacity = copy.level + free
|
||||
local troughCapacity = need.troughCapacity or need.capacity
|
||||
copy.scoreOverride = troughCapacity > 0 and math.max(0, need.scoreOverride - troughPending / troughCapacity) or 0
|
||||
elseif extra > 0 then
|
||||
copy.level = math.min(need.capacity, need.level + extra)
|
||||
end
|
||||
result[index] = copy
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
-- ---- bedste foder først ----
|
||||
-- Foder i et stald-trug deler plads. Lavere foder (ensilage/hø, vægt 0,8) må kun hentes når der er
|
||||
-- bedre foder (TMR, 1,0) på listen, hvis truget er nødlidende: mindst så stor en andel fri.
|
||||
|
||||
Reference in New Issue
Block a user