feat: fyldeste kilde først for mælk/gylle/digestat (v1.5.0.0)
Lagervarer tømmes stadig mindst-fyldte-først; varer hvis tanke løber fulde og stopper produktionen hentes fyldest-først (ADSupplyPlanner.FULLEST_FIRST_FILL_TYPES). Strategien vises i loggen. fix: en trigger foran næsen tæller aldrig som markørens egen (tolerance 2 -> 0). Markør-drift i ensilage-rækken lod næste tanks rør (1,9 m foran) vinde. Verificeret mod savegame: 40/40 siloer, 7/7 ensilage-tanke, 0 dropof.
This commit is contained in:
@@ -7,6 +7,39 @@ ADSupplyPlanner = {}
|
||||
-- Mindre fri plads end dette i målet regnes som "fuldt" (undgår ture med læs der ikke kan komme af).
|
||||
ADSupplyPlanner.MIN_FREE_LITERS = 1000
|
||||
|
||||
-- Varer hvis kilder LØBER FULDE (dyr/produktion fylder tanken løbende og går i stå
|
||||
-- når den er fuld): her hentes den fyldeste kilde først. Alt andet er lagervarer,
|
||||
-- hvor den mindst fyldte silo tømmes først så rester ryddes og siloer frigives.
|
||||
ADSupplyPlanner.FULLEST_FIRST_FILL_TYPES = {
|
||||
MILK = true, GOATMILK = true, BUFFALOMILK = true, SHEEPMILK = true,
|
||||
LIQUIDMANURE = true, DIGESTATE = true,
|
||||
}
|
||||
|
||||
-- fillTypeNames: navnene på de varer der hentes på turen. Kun når ALLE er
|
||||
-- "løber fuld"-varer vendes strategien; blandet eller ukendt valg = mindst først.
|
||||
function ADSupplyPlanner.prefersFullestSource(fillTypeNames)
|
||||
if #fillTypeNames == 0 then
|
||||
return false
|
||||
end
|
||||
for _, name in ipairs(fillTypeNames) do
|
||||
if not ADSupplyPlanner.FULLEST_FIRST_FILL_TYPES[name] then
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
-- Er en kilde med dette niveau bedre end den hidtil bedste (nil = ingen endnu)?
|
||||
function ADSupplyPlanner.isBetterSource(level, bestLevel, prefersFullest)
|
||||
if bestLevel == nil then
|
||||
return true
|
||||
end
|
||||
if prefersFullest then
|
||||
return level > bestLevel
|
||||
end
|
||||
return level < bestLevel
|
||||
end
|
||||
|
||||
function ADSupplyPlanner.copyList(list)
|
||||
local copy = {}
|
||||
for index, value in ipairs(list) do
|
||||
|
||||
Reference in New Issue
Block a user