Gate optimized nameplate paths on reload-safe ClassicAPI

This commit is contained in:
Dusk-92
2026-09-03 16:05:06 +02:00
parent 79c5f2755b
commit 6702c9168a
5 changed files with 19 additions and 11 deletions
+12
View File
@@ -71,6 +71,18 @@ API.mapexploration = type(_G.C_MapExplorationInfo) == "table"
API.eventutils = type(_G.C_EventUtils) == "table"
and type(_G.C_EventUtils.IsEventValid) == "function"
-- ClassicAPI v1.12.5 made nameplate lifecycle events reload-safe by clearing
-- and rebuilding their token/wrapper state around /reload. Older builds can
-- expose the same event names without those guarantees, so keep them on the
-- historical ShaguTweaks discovery path instead of opting into the optimized
-- event-driven path.
API.nameplateevents = API.nameplates
and API.classicapi_version >= 11205
and API.eventutils
and _G.C_EventUtils.IsEventValid("NAME_PLATE_UNIT_ADDED")
and _G.C_EventUtils.IsEventValid("NAME_PLATE_UNIT_REMOVED")
API.modifierkeys = type(_G.IsLeftShiftKeyDown) == "function"
and type(_G.IsRightShiftKeyDown) == "function"
and type(_G.IsLeftControlKeyDown) == "function"
+1 -2
View File
@@ -100,8 +100,7 @@ local function ScheduleDiscovery()
end
local function HasClassicNameplateEvents()
return API and API.nameplates and API.eventutils and _G.C_EventUtils
and _G.C_EventUtils.IsEventValid("NAME_PLATE_UNIT_ADDED")
return API and API.nameplateevents
end
function libnameplate:HasConsumers()
+1 -2
View File
@@ -427,8 +427,7 @@ local passiveChatEvents = {
["CHAT_MSG_WHISPER"] = true,
}
local useNameplateUnitEvents = API and API.eventutils and _G.C_EventUtils
and _G.C_EventUtils.IsEventValid("NAME_PLATE_UNIT_ADDED")
local useNameplateUnitEvents = API and API.nameplateevents
libunitscan:RegisterEvent("PLAYER_ENTERING_WORLD")
libunitscan:RegisterEvent("PLAYER_LOGOUT")
+4 -4
View File
@@ -320,8 +320,7 @@ module.enable = function(self)
local listener = CreateFrame("Frame")
local eventValid = API and API.eventutils and _G.C_EventUtils and _G.C_EventUtils.IsEventValid
if eventValid and _G.C_EventUtils.IsEventValid("NAME_PLATE_UNIT_ADDED")
and _G.C_EventUtils.IsEventValid("NAME_PLATE_UNIT_REMOVED") then
if API and API.nameplateevents and API.casts then
listener:RegisterEvent("NAME_PLATE_UNIT_ADDED")
listener:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
useClassicNameplateTokens = true
@@ -339,7 +338,7 @@ module.enable = function(self)
}
local hasClassicCastEvents = false
if eventValid then
if eventValid and useClassicNameplateTokens then
for _, eventName in pairs(castEvents) do
if _G.C_EventUtils.IsEventValid(eventName) then
listener:RegisterEvent(eventName)
@@ -373,7 +372,8 @@ module.enable = function(self)
end
local unit = arg1
if unit and string.find(unit, "^nameplate%d+$") then
if useClassicNameplateTokens and unit
and string.find(unit, "^nameplate%d+$") then
local plate = platesByUnit[unit] or AttachUnit(unit)
if plate then RefreshPlate(plate) end
end
+1 -3
View File
@@ -16,9 +16,7 @@ module.enable = function(self)
local colorsByName = {}
local colorsVersion = 0
local useClassicTokens = API and API.eventutils and _G.C_EventUtils
and _G.C_EventUtils.IsEventValid("NAME_PLATE_UNIT_ADDED")
and _G.C_EventUtils.IsEventValid("NAME_PLATE_UNIT_REMOVED")
local useClassicTokens = API and API.nameplateevents
if useClassicTokens then
local listener = CreateFrame("Frame")