feat: controller-opslag til GUI (målets varer, køretøjs-label, Wait-reservationer)
This commit is contained in:
@@ -140,6 +140,37 @@ function ADRunsController.getRunIngredients(adEnv, run, vehicle)
|
|||||||
return ADRunsController.getTargetFillTypes(adEnv, run, vehicle)
|
return ADRunsController.getTargetFillTypes(adEnv, run, vehicle)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Alle varer målet tager (uanset vogn) — afkrydsningslisten i GUI'et. {index, name, title}, sorteret på titel.
|
||||||
|
function ADRunsController.getTargetAcceptedFillTypes(adEnv, run)
|
||||||
|
if run.targetWayPointId == nil then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
local farmId = g_currentMission:getFarmId()
|
||||||
|
local target = ADSmartPickup.getUnloadStationAtWayPointId(adEnv, run.targetWayPointId, farmId)
|
||||||
|
if target == nil then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
local fillTypes = g_fillTypeManager.getFillTypes ~= nil and g_fillTypeManager:getFillTypes() or g_fillTypeManager.fillTypes or {}
|
||||||
|
local result = {}
|
||||||
|
for _, fillType in ipairs(fillTypes) do
|
||||||
|
if fillType.index ~= nil and ADSmartPickup.getStationLevelAndCapacity(target, fillType.index, farmId) ~= nil then
|
||||||
|
table.insert(result, {index = fillType.index, name = fillType.name, title = fillType.title or fillType.name})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(result, function(a, b) return tostring(a.title) < tostring(b.title) end)
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fire traktorer kan hedde det samme; løbenummeret er pladsen i farmens AD-køretøjsliste.
|
||||||
|
function ADRunsController.getVehicleLabel(adEnv, vehicle)
|
||||||
|
for index, candidate in ipairs(ADRunsController.getFarmVehicles(adEnv)) do
|
||||||
|
if candidate == vehicle then
|
||||||
|
return string.format("%s (#%d)", tostring(vehicle:getName()), index)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return tostring(vehicle:getName())
|
||||||
|
end
|
||||||
|
|
||||||
-- ---- validering ----
|
-- ---- validering ----
|
||||||
|
|
||||||
local function getLoadCapacity(adEnv, vehicle)
|
local function getLoadCapacity(adEnv, vehicle)
|
||||||
|
|||||||
@@ -176,6 +176,23 @@ function ADUnloadWait.releaseInactive()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Hvem holder hvor (GUI'ets Wait-puljer-visning). Sorteret på mappe, dernæst markør-id.
|
||||||
|
function ADUnloadWait.getClaims()
|
||||||
|
local result = {}
|
||||||
|
for _, wait in pairs(waits) do
|
||||||
|
if wait.waitMarker ~= nil and claims[wait.waitMarker.id] ~= nil then
|
||||||
|
table.insert(result, {marker = wait.waitMarker, vehicle = claims[wait.waitMarker.id]})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(result, function(a, b)
|
||||||
|
if a.marker.group ~= b.marker.group then
|
||||||
|
return tostring(a.marker.group) < tostring(b.marker.group)
|
||||||
|
end
|
||||||
|
return a.marker.id < b.marker.id
|
||||||
|
end)
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
function ADUnloadWait.install(adEnv)
|
function ADUnloadWait.install(adEnv)
|
||||||
local task, autoDrive = adEnv.UnloadAtDestinationTask, adEnv.AutoDrive
|
local task, autoDrive = adEnv.UnloadAtDestinationTask, adEnv.AutoDrive
|
||||||
if isInstalled or task == nil or task.update == nil or autoDrive == nil or autoDrive.getSetting == nil then
|
if isInstalled or task == nil or task.update == nil or autoDrive == nil or autoDrive.getSetting == nil then
|
||||||
|
|||||||
@@ -9,6 +9,14 @@ for index, name in pairs(FILL_TYPE_NAMES) do FILL_TYPE_INDEX[name] = index end
|
|||||||
g_fillTypeManager = {
|
g_fillTypeManager = {
|
||||||
getFillTypeNameByIndex = function(_, index) return FILL_TYPE_NAMES[index] end,
|
getFillTypeNameByIndex = function(_, index) return FILL_TYPE_NAMES[index] end,
|
||||||
getFillTypeIndexByName = function(_, name) return FILL_TYPE_INDEX[name] end,
|
getFillTypeIndexByName = function(_, name) return FILL_TYPE_INDEX[name] end,
|
||||||
|
getFillTypes = function()
|
||||||
|
return {
|
||||||
|
{index = STRAW, name = "STRAW", title = "Halm"},
|
||||||
|
{index = TMR, name = "FORAGE", title = "TMR"},
|
||||||
|
{index = WATER, name = "WATER", title = "Vand"},
|
||||||
|
{index = MILK, name = "MILK", title = "Mælk"},
|
||||||
|
}
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
local logLines = {}
|
local logLines = {}
|
||||||
Logging = {
|
Logging = {
|
||||||
@@ -245,5 +253,18 @@ check("C11 global rotateTargets urørt", adEnv.AutoDrive.settings.rotateTargets.
|
|||||||
check("C11 useFolders global stadig skrevet", adEnv.AutoDrive.settings.useFolders.current, 2)
|
check("C11 useFolders global stadig skrevet", adEnv.AutoDrive.settings.useFolders.current, 2)
|
||||||
check("C11 køretøjet startet", noSettings.started, 1)
|
check("C11 køretøjet startet", noSettings.started, 1)
|
||||||
|
|
||||||
|
-- C10: målets accepterede varer (til afkrydsning i GUI'et) + køretøjs-label
|
||||||
|
buildWorld()
|
||||||
|
local labelA = makeVehicle("vehicleA", "Fastrac A", {STRAW, TMR}, 1000000)
|
||||||
|
local labelB = makeVehicle("vehicleB", "Fastrac B", {STRAW}, 700000)
|
||||||
|
local accRun = ADRunsController.createRun("Cow Feed")
|
||||||
|
check("C10 uden mål -> tom", #ADRunsController.getTargetAcceptedFillTypes(adEnv, ADRuns.getRun(ADRunsController.store, accRun.id)), 0)
|
||||||
|
ADRunsController.updateRun(accRun.id, {targetWayPointId = 94})
|
||||||
|
local accepted = ADRunsController.getTargetAcceptedFillTypes(adEnv, ADRuns.getRun(ADRunsController.store, accRun.id))
|
||||||
|
check("C10 tre varer (halm, TMR, vand)", #accepted, 3)
|
||||||
|
check("C10 sorteret på titel", accepted[1].title .. "," .. accepted[2].title .. "," .. accepted[3].title, "Halm,TMR,Vand")
|
||||||
|
check("C10 navn med", accepted[1].name, "STRAW")
|
||||||
|
check("C10 label", ADRunsController.getVehicleLabel(adEnv, labelB), "Fastrac B (#2)")
|
||||||
|
|
||||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||||
os.exit(failures == 0 and 0 or 1)
|
os.exit(failures == 0 and 0 or 1)
|
||||||
|
|||||||
@@ -707,6 +707,15 @@ listener:update(16)
|
|||||||
FS25_AutoDrive.LoadAtDestinationTask.update(stopperTask, 16)
|
FS25_AutoDrive.LoadAtDestinationTask.update(stopperTask, 16)
|
||||||
check("L7 greb ryddet når AD stopper", stopperTask.seenRotate, RT_ONLYPICKUP)
|
check("L7 greb ryddet når AD stopper", stopperTask.seenRotate, RT_ONLYPICKUP)
|
||||||
|
|
||||||
|
-- W11: reservationer kan aflæses (GUI'ets Wait-puljer-visning)
|
||||||
|
buildWaitWorld()
|
||||||
|
local vc1, tc1 = makeUnloadingVehicle("Fastrac Claim", 531, 5000, 35000)
|
||||||
|
UnloadTask.update(tc1, 16)
|
||||||
|
local claims = ADUnloadWait.getClaims()
|
||||||
|
check("W11 én reservation", #claims, 1)
|
||||||
|
check("W11 markør", claims[1].marker.id, 40)
|
||||||
|
check("W11 køretøj", claims[1].vehicle, vc1)
|
||||||
|
|
||||||
-- ==== I: run-integration — ingredienser fra run i stedet for multi-valg; Wait-pulje pr. run ====
|
-- ==== 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)
|
-- I1: traktor i et run med ÉN valgt vare i AD får alligevel behovsstyring (run'ets liste)
|
||||||
local runDriver = buildCowWorld()
|
local runDriver = buildCowWorld()
|
||||||
|
|||||||
Reference in New Issue
Block a user