fix(status): numpad * som tast og log når vinduet ikke kan tegnes
Standardtasten skifter fra venstre Alt + Insert (kolliderer med FS25_UniversalAutoload) til numpad *. Mangler info-boksens skalering eller overlays, logges det én gang. Statusvinduet henter "start afvist" fra den rigtige ESC-fane, så et flow hvis start fejlede vises rødt som i Flows-listen.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
-- AD Status Hud
|
-- AD Status Hud
|
||||||
-- Statusvinduet på skærmen (i stil med Simple Inspector): slås til/fra med input-handlingen SPU_TOGGLE_STATUS
|
-- Statusvinduet på skærmen (i stil med Simple Inspector): slås til/fra med input-handlingen SPU_TOGGLE_STATUS
|
||||||
-- (standard venstre Alt + Insert). Øjebliksbilledet bygges af modens egne statusfunktioner (samme som fanerne) højst
|
-- (standard numpad *). Ø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.
|
-- 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).
|
-- 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.
|
-- Kører kun på en klient (ikke dedikeret server). Alle spilkald er beskyttet; fejl logges én gang pr. nøgle.
|
||||||
@@ -62,10 +62,18 @@ function ADStatusHud.isClient()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Fanernes egne tekst-/statusfunktioner ligger som metoder på SmartPickupFrame og bruger kun self.i18n:
|
-- Fanernes egne tekst-/statusfunktioner ligger som metoder på SmartPickupFrame og bruger kun self.i18n:
|
||||||
-- en let "frame" med spillets i18n genbruger dem uden at røre menuen.
|
-- en let "frame" med spillets i18n genbruger dem uden at røre menuen. "Start afvist" (lastStartFailed, rødt flow)
|
||||||
|
-- huskes på den rigtige ESC-fane (ADSmartPickup.guiFrame): tabellen deles, så vinduet viser samme farve som
|
||||||
|
-- Flows-listen (flowLevel rydder en afvisning når flowet kører — det samme som fanen selv gør).
|
||||||
local function frameProxy()
|
local function frameProxy()
|
||||||
if SmartPickupFrame == nil then return nil end
|
if SmartPickupFrame == nil then return nil end
|
||||||
return setmetatable({i18n = g_i18n, lastStartFailed = {}}, {__index = SmartPickupFrame})
|
local real = ADSmartPickup ~= nil and ADSmartPickup.guiFrame or nil
|
||||||
|
local failed = {}
|
||||||
|
if type(real) == "table" then
|
||||||
|
if type(real.lastStartFailed) ~= "table" then real.lastStartFailed = {} end
|
||||||
|
failed = real.lastStartFailed
|
||||||
|
end
|
||||||
|
return setmetatable({i18n = g_i18n, lastStartFailed = failed}, {__index = SmartPickupFrame})
|
||||||
end
|
end
|
||||||
|
|
||||||
local function fillTitle(fillType)
|
local function fillTitle(fillType)
|
||||||
@@ -261,6 +269,8 @@ function ADStatusHud.rebuild(adEnv)
|
|||||||
local lines = ADStatusView.lines(ADStatusHud.snapshot(adEnv), textOf, ADStatusView.MAX_LINES)
|
local lines = ADStatusView.lines(ADStatusHud.snapshot(adEnv), textOf, ADStatusView.MAX_LINES)
|
||||||
local textSize, marginX, marginY, offsetX = measureUnits()
|
local textSize, marginX, marginY, offsetX = measureUnits()
|
||||||
if textSize == nil then
|
if textSize == nil then
|
||||||
|
-- spillets info-boks (skalering) findes ikke: vinduet kan ikke måles og tegnes
|
||||||
|
logOnce("measure", "gameInfoDisplay mangler eller kan ikke skalere")
|
||||||
ADStatusHud.lines, ADStatusHud.layout = {}, nil
|
ADStatusHud.lines, ADStatusHud.layout = {}, nil
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@@ -402,8 +412,12 @@ end
|
|||||||
function ADStatusHud.draw()
|
function ADStatusHud.draw()
|
||||||
if not ADStatusHud.visible or ADStatusHud.layout == nil or #ADStatusHud.lines == 0 then return end
|
if not ADStatusHud.visible or ADStatusHud.layout == nil or #ADStatusHud.lines == 0 then return end
|
||||||
if shouldSkipDraw() then return end
|
if shouldSkipDraw() then return end
|
||||||
local bg = createOverlays()
|
local ok0, bg = pcall(createOverlays)
|
||||||
if bg == nil then return end
|
if not ok0 or bg == nil then
|
||||||
|
-- uden baggrund tegnes intet (g_overlayManager/HUD.COLOR mangler eller createOverlay fejlede)
|
||||||
|
logOnce("overlays", ok0 and "g_overlayManager eller HUD.COLOR.BACKGROUND mangler" or bg)
|
||||||
|
return
|
||||||
|
end
|
||||||
local ok, err = pcall(render, ADStatusHud.layout, bg)
|
local ok, err = pcall(render, ADStatusHud.layout, bg)
|
||||||
-- tekststate nulstilles altid, også efter en fejl (andre mods/spillet tegner videre med den)
|
-- tekststate nulstilles altid, også efter en fejl (andre mods/spillet tegner videre med den)
|
||||||
setTextColor(1, 1, 1, 1)
|
setTextColor(1, 1, 1, 1)
|
||||||
|
|||||||
@@ -72,7 +72,8 @@
|
|||||||
</actions>
|
</actions>
|
||||||
<inputBinding>
|
<inputBinding>
|
||||||
<actionBinding action="SPU_TOGGLE_STATUS">
|
<actionBinding action="SPU_TOGGLE_STATUS">
|
||||||
<binding device="KB_MOUSE_DEFAULT" input="KEY_lalt KEY_insert"/>
|
<!-- numpad * (Insert bruges af FS25_UniversalAutoload) -->
|
||||||
|
<binding device="KB_MOUSE_DEFAULT" input="KEY_KP_multiply"/>
|
||||||
</actionBinding>
|
</actionBinding>
|
||||||
</inputBinding>
|
</inputBinding>
|
||||||
</modDesc>
|
</modDesc>
|
||||||
|
|||||||
Reference in New Issue
Block a user