feat: foderprioritering — trug som én trang, spillets fodervægt (TMR 1,0 > hø/ensilage 0,8 > græs 0,4) afgør rækkefølgen i truget; fanen viser samme rangering (v1.10.3.0)
This commit is contained in:
@@ -731,6 +731,42 @@ UnloadTask.update(ts, 16)
|
||||
check("W12 omdirigeret trods isActiveAtTrigger", ts.destinationID, 40)
|
||||
check("W12 AD's aflæsning stoppet før kørsel", stopped, true)
|
||||
|
||||
-- E5: fodertrug = én trang; inden for truget vælges efter spillets fodervægt (TMR 1,0 > hø 0,8 > græs 0,4);
|
||||
-- et tommere halmlager vinder over truget
|
||||
buildCowWorld()
|
||||
addMarker(23, "Høsilo", "Lader", 700, 0); table.insert(stations, makeStation(123, 700, 15, {[HAY] = 80000}, false, {[HAY] = 80000}))
|
||||
addMarker(24, "Græssilo", "Lader", 800, 0); table.insert(stations, makeStation(124, 800, 15, {[GRASS] = 80000}, false, {[GRASS] = 80000}))
|
||||
local e5Food = {[TMR] = 0, [HAY] = 0, [GRASS] = 0}
|
||||
local e5Straw = {level = 20000}
|
||||
local e5Barn = {
|
||||
getName = function() return "Prioritets-stald" end,
|
||||
spec_husbandryFood = {fillLevels = e5Food, capacity = 30000, animalTypeIndex = 7},
|
||||
spec_husbandryStraw = {},
|
||||
getHusbandryIsFillTypeSupported = function(_, fillType) return fillType == STRAW end,
|
||||
getHusbandryFillLevel = function(_, fillType) if fillType == STRAW then return e5Straw.level end return 0 end,
|
||||
getHusbandryCapacity = function(_, fillType) if fillType == STRAW then return 100000 end return 0 end,
|
||||
}
|
||||
g_currentMission.animalFoodSystem = {
|
||||
getAnimalFood = function(_, animalTypeIndex) if animalTypeIndex == 7 then return {groups = {
|
||||
{fillTypes = {TMR}, productionWeight = 1.0}, {fillTypes = {HAY}, productionWeight = 0.8}, {fillTypes = {GRASS}, productionWeight = 0.4}}} end end,
|
||||
getMixturesByAnimalTypeIndex = function() return {} end,
|
||||
}
|
||||
unloadStations[1].targetStorages = nil
|
||||
unloadStations[1].owningPlaceable = e5Barn
|
||||
local e5Driver = makeSupplyDriver(markerByIndex(21), markerByIndex(30), {TMR, HAY, GRASS, STRAW})
|
||||
e5Driver.carriable = {TMR, HAY, GRASS, STRAW}
|
||||
e5Driver.trailers = {level = 0, capacity = 8000}
|
||||
-- trug tomt (100 % trang) vs. halm 80 % tomt -> truget først, og TMR før hø/græs
|
||||
check("E5 tomt trug: TMR først", manager:getNextPickup(e5Driver, false), 20)
|
||||
-- ingen TMR-kilde -> hø (0,8) før græs (0,4)
|
||||
stations[1].getFillLevel = function() return 0 end
|
||||
stations[1].owningPlaceable = nil
|
||||
check("E5 uden TMR-kilde: hø før græs", manager:getNextPickup(e5Driver, false), 23)
|
||||
-- trug 70 % fuldt (30 % trang) vs. halm 80 % tomt -> halm
|
||||
e5Food[HAY] = 21000
|
||||
check("E5 halmlager tommere end truget -> halm", manager:getNextPickup(e5Driver, false), 21)
|
||||
g_currentMission.animalFoodSystem = nil
|
||||
|
||||
-- ==== I: run-integration — ingredienser fra run i stedet for multi-valg; Wait-pulje pr. run ====
|
||||
-- I1: traktor i et run med ÉN valgt vare i AD får alligevel behovsstyring (run'ets liste)
|
||||
local runDriver = buildCowWorld()
|
||||
|
||||
@@ -178,5 +178,20 @@ check("tærskel 30 %: 70 % fri er nok", ADSupplyPlanner.canUnloadRest(70000, 900
|
||||
check("hele resten passer vinder altid", ADSupplyPlanner.canUnloadRest(5000, 5000, 100000, 0.7), true)
|
||||
check("uden tærskel = 50 %-reglen", ADSupplyPlanner.canUnloadRest(50000, 90000, 100000), true)
|
||||
|
||||
-- rankNeeds: fælles trug (scoreOverride) + fodervægt (priority): TMR før hø før græs,
|
||||
-- men et separat halmlager der er tommere vinder over truget
|
||||
local TMR, HAYX = 40, 41
|
||||
local trough = ADSupplyPlanner.rankNeeds({
|
||||
{fillType = GRASS, level = 0, capacity = 30000, scoreOverride = 0.3, priority = 0.4},
|
||||
{fillType = TMR, level = 0, capacity = 30000, scoreOverride = 0.3, priority = 1.0},
|
||||
{fillType = HAYX, level = 0, capacity = 30000, scoreOverride = 0.3, priority = 0.8},
|
||||
{fillType = HAY, level = 20000, capacity = 100000}, -- halm-agtigt separat lager, 80 % tomt
|
||||
})
|
||||
check("separat lager 80 % tomt vinder over trug 30 % tomt", trough[1].fillType, HAY)
|
||||
check("i truget: TMR (1.0) først", trough[2].fillType, TMR)
|
||||
check("så hø (0.8)", trough[3].fillType, HAYX)
|
||||
check("så græs (0.4)", trough[4].fillType, GRASS)
|
||||
check("scoreOverride bruges som score", trough[2].score, 0.3)
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
Reference in New Issue
Block a user