feat: flow-guide tildeler ledige vogne til solo-traktorer
Solo-traktorer (ingen vogn bagpå) er valgbare når en frakoblet vogn med Connect-markør kan bære flowets varer. Guiden foreslår en vogn (navnematch, så Disponibel) med vognvalg pr. traktor; flowet husker parret ved gem, så vognens parkering ikke skal omdøbes.
This commit is contained in:
@@ -83,6 +83,26 @@ function ADFlowWagons.guessWagon(runName, tractorNumber, candidates, taken)
|
||||
return matching[1] ~= nil and matching[1].id or nil
|
||||
end
|
||||
|
||||
-- Ledige vogne til flow-guiden, bedste først: parkering med flowets navn, så "Disponibel", så resten (alfabetisk).
|
||||
-- candidates = {{id, label}} -> ny sorteret liste.
|
||||
function ADFlowWagons.rankWagons(runName, candidates)
|
||||
local wanted = tostring(runName or ""):lower()
|
||||
local function rank(wagon)
|
||||
local label = tostring(wagon.label or ""):lower()
|
||||
if wanted ~= "" and label:find(wanted, 1, true) ~= nil then return 1 end
|
||||
if label:find("disponibel", 1, true) ~= nil then return 2 end
|
||||
return 3
|
||||
end
|
||||
local ranked = {}
|
||||
for _, wagon in ipairs(candidates or {}) do table.insert(ranked, wagon) end
|
||||
table.sort(ranked, function(a, b)
|
||||
local ra, rb = rank(a), rank(b)
|
||||
if ra ~= rb then return ra < rb end
|
||||
return tostring(a.label) < tostring(b.label)
|
||||
end)
|
||||
return ranked
|
||||
end
|
||||
|
||||
function ADFlowWagons.ownerOf(runs, wagonId)
|
||||
for _, run in ipairs(runs or {}) do
|
||||
for _, id in pairs(run.wagons or {}) do
|
||||
|
||||
Reference in New Issue
Block a user