feat: overblik øverst i fanen — pr. run: status, hver traktors aktivitet (kører med læs/tom mod silo/venter), målets niveauer (v1.10.0.0)
This commit is contained in:
@@ -403,6 +403,67 @@ function ADRunsController.getRunStatus(adEnv, run)
|
||||
return {running = running, total = #run.vehicleIds}
|
||||
end
|
||||
|
||||
-- ---- overblik ----
|
||||
|
||||
-- Hvad laver traktoren lige nu? {kind = "stopped"|"waiting"|"loaded"|"empty", fillType, liters, place}
|
||||
-- place = Wait-markør, aflæsningsmål eller den silo moden valgte. Kun eksisterende data bruges.
|
||||
function ADRunsController.getVehicleActivity(adEnv, vehicle)
|
||||
if not isVehicleActive(vehicle) then
|
||||
return {kind = "stopped"}
|
||||
end
|
||||
local wait = ADUnloadWait ~= nil and ADUnloadWait.getWaitFor ~= nil and ADUnloadWait.getWaitFor(vehicle) or nil
|
||||
if wait ~= nil then
|
||||
return {kind = "waiting", fillType = wait.fillType, liters = wait.rest, place = wait.markerName}
|
||||
end
|
||||
local fillType, liters = nil, 0
|
||||
if ADUnloadWait ~= nil and ADUnloadWait.getRestLoad ~= nil then
|
||||
fillType, liters = ADUnloadWait.getRestLoad(adEnv, vehicle)
|
||||
end
|
||||
local stateModule = vehicle.ad.stateModule
|
||||
if fillType ~= nil and liters >= 100 then
|
||||
local target = stateModule.getSecondMarker ~= nil and stateModule:getSecondMarker() or nil
|
||||
return {kind = "loaded", fillType = fillType, liters = liters, place = target ~= nil and target.name or nil}
|
||||
end
|
||||
local pickup = ADSmartPickup.getActivePickup ~= nil and ADSmartPickup.getActivePickup(vehicle) or nil
|
||||
if pickup ~= nil then
|
||||
return {kind = "empty", fillType = pickup.fillType, place = pickup.markerName}
|
||||
end
|
||||
local first = stateModule.getFirstMarker ~= nil and stateModule:getFirstMarker() or nil
|
||||
return {kind = "empty", place = first ~= nil and first.name or nil}
|
||||
end
|
||||
|
||||
-- Målets niveauer for run'ets varer: {{fillType, level, capacity}, ...} mest trængende først.
|
||||
function ADRunsController.getTargetLevels(adEnv, run)
|
||||
local farmId = g_currentMission:getFarmId()
|
||||
local target = run.targetWayPointId ~= nil and ADSmartPickup.getUnloadStationAtWayPointId(adEnv, run.targetWayPointId, farmId) or nil
|
||||
if target == nil then
|
||||
return {}
|
||||
end
|
||||
local fillTypes = {}
|
||||
if run.ingredientMode == "manual" then
|
||||
for _, name in ipairs(run.ingredients) do
|
||||
local index = g_fillTypeManager:getFillTypeIndexByName(name)
|
||||
if index ~= nil then table.insert(fillTypes, index) end
|
||||
end
|
||||
else
|
||||
for _, fillType in ipairs(ADRunsController.getTargetAcceptedFillTypes(adEnv, run)) do
|
||||
table.insert(fillTypes, fillType.index)
|
||||
end
|
||||
end
|
||||
local levels = {}
|
||||
for _, fillType in ipairs(fillTypes) do
|
||||
local level, capacity = ADSmartPickup.getStationLevelAndCapacity(target, fillType, farmId)
|
||||
if level ~= nil then
|
||||
table.insert(levels, {fillType = fillType, level = level, capacity = capacity, free = capacity - level})
|
||||
end
|
||||
end
|
||||
table.sort(levels, function(a, b)
|
||||
if a.free ~= b.free then return a.free > b.free end
|
||||
return a.fillType < b.fillType
|
||||
end)
|
||||
return levels
|
||||
end
|
||||
|
||||
-- ---- opslag til dropdowns ----
|
||||
|
||||
-- Mål er steder der SKAL holdes fyldt: stalde (1) og fabrikker (2). Siloer tager alt og
|
||||
|
||||
Reference in New Issue
Block a user