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:
@@ -251,5 +251,48 @@ check("FL16 mål -> markører", table.concat(previewIn.targetWayPointIds, ","),
|
||||
check("FL16 primært mål", previewIn.targetWayPointId, 101)
|
||||
check("FL16 kladde urørt", withTarget.draft.targetWayPointIds == nil or #withTarget.draft.targetWayPointIds == 0, true)
|
||||
|
||||
|
||||
-- ---- solo-traktor + ledig vogn (in-game 29/9: flow kunne ikke oprettes uden at omdøbe en vogns parkering) ----
|
||||
local soloCtx = ctx({
|
||||
vehicles = {
|
||||
{id = "s1", label = "Solo 1", text = "Solo 1", solo = true},
|
||||
{id = "s2", label = "Solo 2", text = "Solo 2", solo = true},
|
||||
{id = "s3", label = "Solo 3", text = "Solo 3", solo = true},
|
||||
{id = "t1", label = "Traktor 1", text = "Traktor 1 — OK"},
|
||||
},
|
||||
wagons = {{id = "w1", label = "P Disponibel Vogn 4"}, {id = "w2", label = "P Disponibel Vogn 5"}},
|
||||
})
|
||||
local soloGuide = FG.open(newRun("supply"), soloCtx)
|
||||
local one = FG.choose(soloGuide, "vehicleIds", {item = "s1", on = true})
|
||||
check("WG1 solo tildeles første ledige vogn", one.draft.wagons.s1, "w1")
|
||||
local two = FG.choose(one, "vehicleIds", {item = "s2", on = true})
|
||||
check("WG2 næste solo får næste vogn", two.draft.wagons.s2, "w2")
|
||||
check("WG2 første beholder sin", two.draft.wagons.s1, "w1")
|
||||
local three = FG.choose(two, "vehicleIds", {item = "s3", on = true})
|
||||
check("WG3 ingen ledig vogn tilbage -> ingen tildeling", three.draft.wagons.s3, nil)
|
||||
local soloRows = FG.rows(at(three, "tractors"))
|
||||
local wagonRow = findRow(soloRows, "wagon", "s1")
|
||||
check("WG4 vognvalg under solo-traktor", wagonRow ~= nil and wagonRow.type, "choice")
|
||||
check("WG4 vognvalg viser tildelt vogn", wagonRow ~= nil and wagonRow.value, "w1")
|
||||
check("WG4 valgmuligheder uden de andres vogne", wagonRow ~= nil and #wagonRow.options, 1)
|
||||
local noFree = false
|
||||
for _, row in ipairs(soloRows) do if row.label ~= nil and row.label.key == "spu_guide_flow_noFreeWagon" then noFree = true end end
|
||||
check("WG5 solo uden ledig vogn får besked", noFree, true)
|
||||
check("WG5 almindelig traktor har intet vognvalg", findRow(FG.rows(at(FG.choose(soloGuide, "vehicleIds", {item = "t1", on = true}), "tractors")), "wagon", "t1"), nil)
|
||||
local swapped = FG.choose(FG.choose(one, "vehicleIds", {item = "s2", on = false}), "wagon", {item = "s1", value = "w2"})
|
||||
check("WG6 skift vogn", swapped.draft.wagons.s1, "w2")
|
||||
local off = FG.choose(two, "vehicleIds", {item = "s1", on = false})
|
||||
check("WG7 fravalgt traktor slipper vognen", off.draft.wagons.s1, nil)
|
||||
local freed = FG.choose(off, "vehicleIds", {item = "s3", on = true})
|
||||
check("WG7 frigjort vogn går til næste", freed.draft.wagons.s3, "w1")
|
||||
check("WG8 resultat har vognene", FG.result(two).wagons.s2, "w2")
|
||||
check("WG8 resultat uden fravalgte", FG.result(off).wagons.s1, nil)
|
||||
local remembered = newRun("supply", {vehicleIds = {"s2"}})
|
||||
remembered.wagons = {s2 = "w2"}
|
||||
local reopened = FG.open(remembered, soloCtx)
|
||||
check("WG9 husket vogn i kladden", reopened.draft.wagons.s2, "w2")
|
||||
check("WG9 ny solo tager ikke den huskede", FG.choose(reopened, "vehicleIds", {item = "s1", on = true}).draft.wagons.s1, "w1")
|
||||
check("WG9 kladden kopierer (run urørt)", (function() local g = FG.choose(reopened, "wagon", {item = "s2", value = "w1"}); return remembered.wagons.s2 end)(), "w2")
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
@@ -126,5 +126,15 @@ check("forældreløs: har ejer -> intet", W.orphanAction({owned = true, idleMs =
|
||||
check("forældreløs: for kort tid -> vent", W.orphanAction({owned = false, idleMs = 1000}), "wait")
|
||||
-- parkeret sæt på traktorens egen plads er ikke forældreløst (in-game 29/9: vinmarks-REX blev skilt ad)
|
||||
check("forældreløs: står på egen parkering -> intet", W.orphanAction({owned = false, atOwnPark = true, idleMs = W.ORPHAN_MS}), "none")
|
||||
|
||||
-- rækkefølge for ledige vogne i flow-guiden: navnematch, så disponible, så resten (alfabetisk)
|
||||
local ranked = W.rankWagons("Sugarbeet Cut", {
|
||||
{id = "a", label = "P Tedder"}, {id = "b", label = "P Disponibel Vogn 5"},
|
||||
{id = "c", label = "P Sugarbeet Cut vogn 1"}, {id = "d", label = "P Disponibel Vogn 4"}, {id = "e", label = "P Bredal vogn"}})
|
||||
local order = {}
|
||||
for _, w in ipairs(ranked) do table.insert(order, w.id) end
|
||||
check("rank: navn, disponible, resten", table.concat(order, ","), "c,d,b,e,a")
|
||||
check("rank: tom liste", #W.rankWagons("X", {}), 0)
|
||||
|
||||
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