mirror of
https://github.com/brues-code/pfUI.git
synced 2026-10-30 23:46:57 +00:00
Drop named-unit frames and the pfValidUnits global
CreateUnitFrame and CreateCastbar could take a character name instead of a unit token, but every caller passes a token, so that mode and the empty-label guards around it were dead. The OnClick TargetByName branch could never run anyway: label was always a string, and "" is truthy. With that gone, the aggro scan was the only reader of pfValidUnits, so its unit list now lives in unitframes.lua and is built once at load. /focusname resolves the name with UnitTokenFromName (exact first, then prefix) instead of swapping the target and muting UIErrorsFrame.
This commit is contained in:
+6
-11
@@ -150,8 +150,8 @@ pfUI:RegisterModule("castbar", function ()
|
||||
-- One-shot poll: read C_Spell for the bar's unit, stamp or clear. Called
|
||||
-- from event handlers (cast start, target/focus change), never per-frame.
|
||||
local function RefreshBar(cb, rank)
|
||||
local query = cb.unitstr ~= "" and cb.unitstr or cb.unitname
|
||||
if not query or (cb.unitstr ~= "" and not UnitExists(cb.unitstr)) then
|
||||
local query = cb.unitstr
|
||||
if not UnitExists(query) then
|
||||
ClearBar(cb)
|
||||
return
|
||||
end
|
||||
@@ -178,7 +178,7 @@ pfUI:RegisterModule("castbar", function ()
|
||||
end
|
||||
end
|
||||
|
||||
local function CreateCastbar(name, parent, unitstr, unitname)
|
||||
local function CreateCastbar(name, parent, unitstr)
|
||||
local cb = CreateFrame("Frame", name, parent or UIParent)
|
||||
|
||||
cb:SetHeight(C.global.font_size * 1.5)
|
||||
@@ -186,7 +186,6 @@ pfUI:RegisterModule("castbar", function ()
|
||||
cb:SetFrameLevel(8)
|
||||
|
||||
cb.unitstr = unitstr
|
||||
cb.unitname = unitname
|
||||
|
||||
-- icon
|
||||
cb.icon = CreateFrame("Frame", nil, cb)
|
||||
@@ -277,7 +276,7 @@ pfUI:RegisterModule("castbar", function ()
|
||||
|
||||
-- Non-player bars: if the unit disappears (target died / detarget),
|
||||
-- drop the bar immediately.
|
||||
if this.unitstr ~= "" and this.unitstr ~= "player" and not UnitExists(this.unitstr) then
|
||||
if this.unitstr ~= "player" and not UnitExists(this.unitstr) then
|
||||
ClearBar(this)
|
||||
return
|
||||
end
|
||||
@@ -423,13 +422,12 @@ pfUI:RegisterModule("castbar", function ()
|
||||
-- endMs. delay is a positive magnitude; OnUpdate signs it "+" for casts
|
||||
-- and "-" for channels. Skipped during a tradeskill merge.
|
||||
if this.endTime and not this.tradeskillTotal then
|
||||
local query = this.unitstr ~= "" and this.unitstr or this.unitname
|
||||
local startMs, endMs
|
||||
if this.isChannel then
|
||||
local _, _, _, s, e = C_Spell.UnitChannelInfo(query)
|
||||
local _, _, _, s, e = C_Spell.UnitChannelInfo(unit)
|
||||
startMs, endMs = s, e
|
||||
else
|
||||
local _, _, _, s, e = C_Spell.UnitCastingInfo(query)
|
||||
local _, _, _, s, e = C_Spell.UnitCastingInfo(unit)
|
||||
startMs, endMs = s, e
|
||||
end
|
||||
if startMs and endMs then
|
||||
@@ -544,9 +542,6 @@ pfUI:RegisterModule("castbar", function ()
|
||||
pfUI.castbar.focus:SetHeight(C.castbar.focus.height)
|
||||
end
|
||||
|
||||
-- bind castbar to the "focus" unit token; the GUID resolves at read time
|
||||
pfUI.castbar.focus.unitstr = "focus"
|
||||
|
||||
UpdateMovable(pfUI.castbar.focus)
|
||||
end
|
||||
end)
|
||||
+5
-28
@@ -29,38 +29,15 @@ pfUI:RegisterModule("focus", function ()
|
||||
end)
|
||||
|
||||
-- /focus and /clearfocus live in ClassicAPI's SlashCommandsRegistry now.
|
||||
-- /focusname is pfUI-specific because the engine has no name→GUID
|
||||
-- lookup for off-screen units — we resolve via a short target-swap.
|
||||
-- `/focus Name` takes the nearest prefix match; /focusname tries the exact
|
||||
-- name first, so "Bob" still wins over a nearer "Bobby".
|
||||
|
||||
pfUI.api.RegisterSlashCommand("PFFOCUSNAME", { '/focusname', '/pffocusname' }, function(msg)
|
||||
if msg == "" then return end
|
||||
|
||||
local prevGUID = UnitGUID("target")
|
||||
local prevPlayer = UnitIsUnit("target", "player")
|
||||
|
||||
-- Suppress async "Unknown unit" errors fired by TargetByName misses.
|
||||
UIErrorsFrame:UnregisterEvent("UI_ERROR_MESSAGE")
|
||||
|
||||
-- Try exact match first, then prefix match via /target.
|
||||
TargetByName(msg, true)
|
||||
if not UnitExists("target") then
|
||||
SlashCmdList.TARGET(msg)
|
||||
end
|
||||
|
||||
if UnitExists("target") then
|
||||
FocusUnit("target")
|
||||
end
|
||||
|
||||
RunNextFrame(function()
|
||||
UIErrorsFrame:RegisterEvent("UI_ERROR_MESSAGE")
|
||||
end)
|
||||
|
||||
if prevGUID and prevGUID ~= "0x0000000000000000" then
|
||||
TargetUnit(prevGUID)
|
||||
elseif prevPlayer then
|
||||
TargetUnit("player")
|
||||
else
|
||||
ClearTarget()
|
||||
local unit = UnitTokenFromName(msg, true) or UnitTokenFromName(msg)
|
||||
if unit then
|
||||
FocusUnit(unit)
|
||||
end
|
||||
end, true)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user