fix(marksilo): høsten først — tømmevogne holdes tilbage til høstere der kører (planlagt antal minus udsendte); fabrik kun med plads til hele læsset (v1.45.1.0)
This commit is contained in:
@@ -39,6 +39,9 @@ local function chooseStore(stores, silo, fillType, liters, minLiters, reserved,
|
||||
if mostFree == nil or free > mostFree then most, mostFree = store, free end
|
||||
end
|
||||
end
|
||||
-- fabrikker kun med plads til hele læsset: en fabrik tager kun det den forbruger, så en vogn med resten
|
||||
-- holder ved den i timevis (in-game 28/9: 252.000 l kartofler ved en fuld snackfabrik)
|
||||
if production then return best end
|
||||
return best or most
|
||||
end
|
||||
|
||||
@@ -69,6 +72,27 @@ local function pickStore(input, farmIncoming, task, liters, minLiters, reserved)
|
||||
or chooseStore(input.stores, task.silo, fillType, liters, minLiters, reserved, not wantProduction)
|
||||
end
|
||||
|
||||
-- Høsten først: for hvert behov {fillType, count} (høstere i arbejde, der mangler tømmevogne) holdes så mange
|
||||
-- vogne der kan bære afgrøden tilbage; resten må marksilo-flowet låne. Ny liste; input muteres ikke.
|
||||
function ADFieldSiloPlanner.withoutHarvestReserve(vehicles, needs)
|
||||
local held = {}
|
||||
for _, need in ipairs(needs or {}) do
|
||||
local left = need.count or 0
|
||||
for _, vehicle in ipairs(vehicles or {}) do
|
||||
if left <= 0 then break end
|
||||
if not held[vehicle.id] and canCarry(vehicle, need.fillType) then
|
||||
held[vehicle.id] = true
|
||||
left = left - 1
|
||||
end
|
||||
end
|
||||
end
|
||||
local free = {}
|
||||
for _, vehicle in ipairs(vehicles or {}) do
|
||||
if not held[vehicle.id] then table.insert(free, vehicle) end
|
||||
end
|
||||
return free
|
||||
end
|
||||
|
||||
function ADFieldSiloPlanner.plan(input)
|
||||
local minLiters = input.minLiters or 10000
|
||||
local storesById = {}
|
||||
|
||||
Reference in New Issue
Block a user