fix: debug HUD never injected — mod files are invisible to the game require system (DMF loads via own file loader); registered element with mod:add_require_path and moved injection to UIHud:init hook following NumericUI's proven pattern (+ inject evidence line, super.update call, Color fn for text)

This commit is contained in:
2026-10-04 09:54:45 -04:00
parent 2535c1aaaf
commit 7f645e806a
2 changed files with 20 additions and 10 deletions
@@ -9,9 +9,15 @@ local ScriptUnit_extension = ScriptUnit.extension
mod.debug_hud_last = {}
local ELEMENT_CLASS_NAME = "HudElementAutoMarkDebug"
local ELEMENT_FILENAME = "AutoMark/scripts/mods/AutoMark/ui/hud_element_debug"
mod:hook(CLASS.UIManager, "create_player_hud",
function(func, self, peer_id, local_player_id, elements, visibility_groups)
-- the game HUD requires element files through the game require system; without
-- registering here, require(ELEMENT_FILENAME) from UIHud._add_element never finds
-- the mod file (DMF loads mod scripts through its own file loader, not package.path)
mod:add_require_path(ELEMENT_FILENAME)
mod:hook("UIHud", "init",
function(func, self, elements, visibility_groups, params)
if mod_settings.debug_hud and elements then
local already = false
for i = 1, #elements do
@@ -23,13 +29,20 @@ mod:hook(CLASS.UIManager, "create_player_hud",
if not already then
elements[#elements + 1] = {
class_name = ELEMENT_CLASS_NAME,
filename = "AutoMark/scripts/mods/AutoMark/ui/hud_element_debug",
filename = ELEMENT_FILENAME,
use_hud_scale = true,
visibility_groups = { "alive", "dead" },
}
end
if not mod.debug_hud_inject_logged then
mod.debug_hud_inject_logged = true
mod:diag("OMNI-HUD inject: setting=on already=", tostring(already))
end
elseif not mod.debug_hud_inject_logged then
mod.debug_hud_inject_logged = true
mod:diag("OMNI-HUD inject: setting=off, skipped")
end
return func(self, peer_id, local_player_id, elements, visibility_groups)
return func(self, elements, visibility_groups, params)
end)
local function unit_breed_name(unit)
@@ -49,12 +49,7 @@ local widget_definitions = {
0,
0,
},
text_color = {
240,
235,
180,
255,
},
text_color = Color.terminal_text_header(255, true),
},
},
}, "panel"),
@@ -70,6 +65,8 @@ HudElementAutoMarkDebug.init = function (self, parent, draw_layer, start_scale)
end
HudElementAutoMarkDebug.update = function (self, dt, t, ui_renderer, render_settings, input_service)
HudElementAutoMarkDebug.super.update(self, dt, t, ui_renderer, render_settings, input_service)
self._rebuild_time = self._rebuild_time - dt
if self._rebuild_time > 0 then
return