feat: flere mål pr. run (afkrydsning; den stald der mangler mest får turen, AD's mål skiftes ved turstart) + under-faner Overblik/Runs (v1.11.0.0)
This commit is contained in:
@@ -64,7 +64,20 @@ ADSmartPickup = {
|
||||
getLoadStationAtWayPointId = function(_, id) return loadAt[id] end,
|
||||
getStationLevelAndCapacity = function(station, fillType)
|
||||
if station.accepts[fillType] == nil then return nil end
|
||||
return 0, station.accepts[fillType]
|
||||
return (station.levels or {})[fillType] or 0, station.accepts[fillType]
|
||||
end,
|
||||
-- forenklet rangering: mest fri plads (relativt) først; fulde sidst
|
||||
getTargetNeedsRanked = function(station, fillTypes)
|
||||
local ranked = {}
|
||||
for _, fillType in ipairs(fillTypes) do
|
||||
local capacity = station.accepts[fillType]
|
||||
if capacity ~= nil then
|
||||
local level = (station.levels or {})[fillType] or 0
|
||||
table.insert(ranked, {fillType = fillType, level = level, capacity = capacity, freeSpace = capacity - level, score = (capacity - level) / capacity})
|
||||
end
|
||||
end
|
||||
table.sort(ranked, function(a, b) return a.score > b.score end)
|
||||
return ranked
|
||||
end,
|
||||
}
|
||||
ADSupplyPlanner = {isWaitMarker = function(marker) return string.find(string.lower(marker.group or ""), "%f[%a]wait%f[%A]") ~= nil end}
|
||||
@@ -345,5 +358,22 @@ actVehicle.waitInfo = {markerName = "Cow Wait", fillType = STRAW, rest = 5000}
|
||||
check("C15 venter", ADRunsController.getVehicleActivity(adEnv, actVehicle).kind, "waiting")
|
||||
ADUnloadWait = nil
|
||||
|
||||
-- C16: flere mål pr. run — Auto-varer = union; chooseTarget = den stald der mangler mest; validering
|
||||
buildWorld()
|
||||
addMarker(99, "Cow 2 Food", "Cow Food", 5200, 0); unloadAt[99] = {accepts = {[STRAW] = 300000, [TMR] = 300000}, levels = {[STRAW] = 0, [TMR] = 0}}
|
||||
unloadAt[94].levels = {[STRAW] = 250000, [TMR] = 250000, [WATER] = 50000}
|
||||
local multiVehicle = makeVehicle("vehicleMulti", "Multi", {STRAW, TMR, WATER}, 1000000, 100, 0)
|
||||
local multi = ADRunsController.createRun("Kvæg")
|
||||
ADRunsController.updateRun(multi.id, {targetWayPointIds = {94, 99}})
|
||||
local multiRun = ADRuns.getRun(ADRunsController.store, multi.id)
|
||||
check("C16 auto-varer = union (vand kun i stald 1)", table.concat(ADRunsController.getRunIngredients(adEnv, multiRun, multiVehicle), ","), WATER .. "," .. STRAW .. "," .. TMR)
|
||||
check("C16 accepterede varer = union", #ADRunsController.getTargetAcceptedFillTypes(adEnv, multiRun), 3)
|
||||
check("C16 vælger stald 2 (tom)", ADRunsController.chooseTarget(adEnv, multiRun, multiVehicle), 99)
|
||||
unloadAt[99].levels = {[STRAW] = 290000, [TMR] = 290000}
|
||||
check("C16 vælger stald 1 når stald 2 er fuld", ADRunsController.chooseTarget(adEnv, multiRun, multiVehicle), 94)
|
||||
check("C16 validering ok med flere mål", ADRunsController.validateVehicle(adEnv, multiRun, multiVehicle).ok, true)
|
||||
ADRunsController.updateRun(multi.id, {targetWayPointIds = {4242}})
|
||||
check("C16 kun ukendte mål -> noTarget", ADRunsController.validateVehicle(adEnv, ADRuns.getRun(ADRunsController.store, multi.id), multiVehicle).reason, "noTarget")
|
||||
|
||||
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