feat(udkørsel): 'Lager til' — tvunget aflæsningssted pr. flow (siloer/egne fabrikker; første med plads og vej), XML #storeBuildings (v1.18.0.0)
This commit is contained in:
@@ -44,5 +44,30 @@ check("LS2 fremmed anlæg aldrig", L.isStoreTarget({owningPlaceable = foreignBio
|
||||
check("LS2 hjemmet selv aldrig", L.isStoreTarget({owningPlaceable = biogas}, SLURRY, {owningPlaceable = biogas}, true), false)
|
||||
g_currentMission = nil
|
||||
|
||||
-- LS3: tvunget lagermål — kun de valgte markører, i rækkefølge; første der tager varen, har plads og kan nås
|
||||
do
|
||||
local stations = {
|
||||
[101] = {accepts = {[SLURRY] = true}, free = 0}, -- BGA fuld
|
||||
[102] = {accepts = {[SLURRY] = true}, free = 900000}, -- gylletank
|
||||
[103] = {accepts = {[MILK] = true}, free = 900000}, -- tager ikke gylle
|
||||
}
|
||||
for _, st in pairs(stations) do
|
||||
st.getIsFillTypeSupported = function(self, ft) return self.accepts[ft] == true end
|
||||
st.getFreeCapacity = function(self) return self.free end
|
||||
end
|
||||
ADSmartPickup = {getFarmId = function() return 1 end, getUnloadStationAtWayPointId = function(_, id) return stations[id] end}
|
||||
local adEnv = {ADGraphManager = {getMapMarkerByWayPointId = function(_, id) return {id = id, name = "m" .. id} end}}
|
||||
local vehicle = {}
|
||||
local all = function() return true end
|
||||
check("LS3 fuld BGA springes over -> tank", L.findForcedDumpMarker(adEnv, vehicle, SLURRY, 20000, {101, 102}, all).id, 102)
|
||||
stations[101].free = 500000
|
||||
check("LS3 BGA med plads vælges først", L.findForcedDumpMarker(adEnv, vehicle, SLURRY, 20000, {101, 102}, all).id, 101)
|
||||
local none, why = L.findForcedDumpMarker(adEnv, vehicle, SLURRY, 20000, {103}, all)
|
||||
check("LS3 intet valgt mål tager varen -> nil", none, nil)
|
||||
check("LS3 forklaring", why ~= nil and why:find("valgt", 1, true) ~= nil, true)
|
||||
check("LS3 ikke nåelig -> næste", L.findForcedDumpMarker(adEnv, vehicle, SLURRY, 20000, {101, 102}, function(id) return id ~= 101 end).id, 102)
|
||||
ADSmartPickup = nil
|
||||
end
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
@@ -582,5 +582,22 @@ do
|
||||
sources[31], sources[32], products[31], products[32] = nil, nil, nil, nil
|
||||
end
|
||||
|
||||
-- O-forced: "Lager til" valgt -> lagerturen går til det valgte mål, ikke moden egen silo-valg
|
||||
do
|
||||
sources[41] = {kind = "silo", wayPointId = 41, station = {name = "gylleSilo"}, name = "Gyllesilo"}
|
||||
products[41] = {{fillType = SUGAR, name = "SUGAR", title = "Sukker", available = 11000000, level = 11000000, capacity = 12000000, isPallet = false}}
|
||||
local vF = newVehicle("Gyllevogn", 0, 0, 20000)
|
||||
runs[vF] = outboundRun(79, {41}, {{fillType = "SUGAR", policy = "store"}})
|
||||
runs[vF].forcedMarkers = {31}
|
||||
ADRunsController.getStoreMarkers = function(_, run) return run.forcedMarkers or {} end
|
||||
local forcedCalls = 0
|
||||
ADLoadSwap.findForcedDumpMarker = function(_, _, _, _, ids) forcedCalls = forcedCalls + 1 return {id = ids[1], name = "BGA", markerIndex = 99} end
|
||||
dumpMarker = mStore
|
||||
ADOutbound.choosePickup(adEnv, vF)
|
||||
check("O-forced valgt mål brugt", forcedCalls > 0, true)
|
||||
check("O-forced tur-mål = BGA", ADOutbound.getTripFor(vF) and ADOutbound.getTripFor(vF).targetWayPointId, 31)
|
||||
ADRunsController.getStoreMarkers, ADLoadSwap.findForcedDumpMarker = nil, nil
|
||||
end
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
@@ -307,5 +307,20 @@ do
|
||||
check("RN ukendt køretøj", names.v9, nil)
|
||||
end
|
||||
|
||||
-- RS: tvunget lagermål — storeBuildingIds (toggle, kopi, records roundtrip)
|
||||
do
|
||||
local store, run = ADRuns.createRun(ADRuns.newStore(), "Slurry", "outbound")
|
||||
check("RS tom som standard", #run.storeBuildingIds, 0)
|
||||
store = ADRuns.toggleStoreBuilding(store, run.id, "BGA500kw")
|
||||
store = ADRuns.toggleStoreBuilding(store, run.id, "tank2")
|
||||
check("RS to valgt", table.concat(ADRuns.getRun(store, run.id).storeBuildingIds, ","), "BGA500kw,tank2")
|
||||
store = ADRuns.toggleStoreBuilding(store, run.id, "tank2")
|
||||
check("RS fravalgt igen", table.concat(ADRuns.getRun(store, run.id).storeBuildingIds, ","), "BGA500kw")
|
||||
local records = ADRuns.toRecords(store)
|
||||
check("RS record", records[1].storeBuildings, "BGA500kw")
|
||||
local back = ADRuns.fromRecords(records)
|
||||
check("RS roundtrip", table.concat(ADRuns.getRun(back, run.id).storeBuildingIds, ","), "BGA500kw")
|
||||
end
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
@@ -700,6 +700,14 @@ local rowIn = ADRunsController.getFlowRow(adEnv, ADRuns.getRun(ADRunsController.
|
||||
check("CF5 forsyning fra = alle siloer", rowIn.fromAllSilos, true)
|
||||
check("CF5 forsyning til", table.concat(rowIn.toNames, ","), "Kostald 1,Sukkerfabrik")
|
||||
check("CF5 forsyning auto-varer", rowIn.productAuto, true)
|
||||
-- SB: "Lager til" — valgte bygninger -> deres aflæsningsmarkører (i valgt rækkefølge; ukendte udelades)
|
||||
do
|
||||
local sbRun = ADRunsController.createRun("Gylle", "outbound")
|
||||
ADRunsController.updateRun(sbRun.id, {storeBuildingIds = {"mill", "findes-ikke", "barn1"}})
|
||||
check("SB markører", table.concat(ADRunsController.getStoreMarkers(adEnv, ADRuns.getRun(ADRunsController.store, sbRun.id)), ","), "77,94")
|
||||
ADRunsController.updateRun(sbRun.id, {storeBuildingIds = {}})
|
||||
check("SB tom = ingen tvang", #ADRunsController.getStoreMarkers(adEnv, ADRuns.getRun(ADRunsController.store, sbRun.id)), 0)
|
||||
end
|
||||
ADBuildings = nil; ADSources = nil; ADOutbound = nil
|
||||
|
||||
-- RC-navne: køretøjer får AD-førernavn efter forløbet; ude af forløb -> modelnavnet igen
|
||||
|
||||
Reference in New Issue
Block a user