fix(status): farve som Flows-listen, solgte køretøjer skjules og tasten er Alt+Insert
- En flow-traktors linje følger flowets niveau (venter/fejl) som Flows-listen. - Solgte/slettede køretøjer (isDeleted, ingen/død rootNode) vises ikke under stået stille. - Standardtasten er venstre Alt + Insert (S er spillets gå/bremse-akse).
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
-- AD Status Hud
|
||||
-- Statusvinduet på skærmen (i stil med Simple Inspector): slås til/fra med input-handlingen SPU_TOGGLE_STATUS
|
||||
-- (standard venstre Alt + S). Øjebliksbilledet bygges af modens egne statusfunktioner (samme som fanerne) højst
|
||||
-- (standard venstre Alt + Insert). Øjebliksbilledet bygges af modens egne statusfunktioner (samme som fanerne) højst
|
||||
-- hvert sekund i update() og kun mens vinduet er tændt; draw() tegner kun de cachede linjer og bredder.
|
||||
-- Synligheden gemmes pr. bruger i modSettings/FS25_ADSmartPickup/status.xml (standard skjult).
|
||||
-- Kører kun på en klient (ikke dedikeret server). Alle spilkald er beskyttet; fejl logges én gang pr. nøgle.
|
||||
@@ -135,7 +135,8 @@ function ADStatusHud.flowEntries(adEnv, proxy)
|
||||
local vehicle = byId[vehicleId]
|
||||
if vehicle ~= nil then
|
||||
local action, level = vehicleAction(adEnv, vehicle)
|
||||
if runLevel == "error" then level = "error" end
|
||||
-- farven følger flowets niveau som Flows-listen (venter/fejl), ellers traktorens egen handling
|
||||
if runLevel == "error" or runLevel == "waiting" then level = runLevel end
|
||||
table.insert(entries, {vehicle = tostring(ADRuns.vehicleLabel(vehicle)), action = action,
|
||||
fillPercent = guarded("fillPercent", fillPercent, adEnv, vehicle), level = level})
|
||||
end
|
||||
@@ -188,6 +189,13 @@ function ADStatusHud.chainEntries(proxy)
|
||||
return result
|
||||
end
|
||||
|
||||
-- Solgt/slettet køretøj (ADStuckDiag kan holde det et øjeblik efter salget).
|
||||
local function isGone(vehicle)
|
||||
if vehicle == nil or vehicle.isDeleted then return true end
|
||||
if vehicle.rootNode == nil then return true end
|
||||
return entityExists ~= nil and not entityExists(vehicle.rootNode)
|
||||
end
|
||||
|
||||
-- Gårdens køretøjer der har stået stille over grænsen, uden at Smart Pickup selv holder dem (Wait/udkørsel).
|
||||
function ADStatusHud.stuckEntries()
|
||||
local entries = {}
|
||||
@@ -195,9 +203,9 @@ function ADStatusHud.stuckEntries()
|
||||
local farmId = g_currentMission ~= nil and g_currentMission.getFarmId ~= nil and g_currentMission:getFarmId() or nil
|
||||
for _, still in ipairs(ADStuckDiag.stillVehicles(ADStatusHud.STUCK_WARN_MS)) do
|
||||
local vehicle = still.vehicle
|
||||
local owned = farmId == nil or (vehicle.getOwnerFarmId ~= nil and vehicle:getOwnerFarmId() == farmId)
|
||||
local held = (ADUnloadWait ~= nil and ADUnloadWait.getWaitFor ~= nil and ADUnloadWait.getWaitFor(vehicle) ~= nil)
|
||||
or (ADOutbound ~= nil and ADOutbound.getHoldFor ~= nil and ADOutbound.getHoldFor(vehicle) ~= nil)
|
||||
local owned = not isGone(vehicle) and (farmId == nil or (vehicle.getOwnerFarmId ~= nil and vehicle:getOwnerFarmId() == farmId))
|
||||
local held = owned and ((ADUnloadWait ~= nil and ADUnloadWait.getWaitFor ~= nil and ADUnloadWait.getWaitFor(vehicle) ~= nil)
|
||||
or (ADOutbound ~= nil and ADOutbound.getHoldFor ~= nil and ADOutbound.getHoldFor(vehicle) ~= nil))
|
||||
if owned and not held then
|
||||
table.insert(entries, {text = string.format(textOf("spu_status_stuck"), tostring(ADRuns.vehicleLabel(vehicle)),
|
||||
math.floor(still.ms / 60000)), level = "error"})
|
||||
|
||||
Reference in New Issue
Block a user