mirror of
https://github.com/brues-code/pfUI.git
synced 2026-10-22 12:10:48 +00:00
Compare commits
4
Commits
v9.0.16
...
6d1bfe805e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d1bfe805e | ||
|
|
838f7f5d25 | ||
|
|
fad078fa87 | ||
|
|
48d76138ed |
+1
-1
@@ -231,7 +231,7 @@ end
|
||||
-- unit [string] the unitstring
|
||||
-- return: [table] string, r, g, b
|
||||
function pfUI.api.GetUnitColor(unitstr)
|
||||
local _, class = UnitClass(unitstr)
|
||||
local class = UnitClassBase(unitstr)
|
||||
local classColor = PFUI_CLASS_COLORS[class]
|
||||
return classColor:GenerateHexColorMarkup(), classColor:GetRGB()
|
||||
end
|
||||
|
||||
+9
-18
@@ -1182,15 +1182,9 @@ end
|
||||
function pfUI.uf.OnEnter()
|
||||
if not this.label then return end
|
||||
|
||||
-- Nampower: Set native mouseover unit for macro/addon compatibility
|
||||
if SetMouseoverUnit then
|
||||
local unitstr = this.label .. this.id
|
||||
-- For GUID-based frames (focus), use the GUID directly
|
||||
if this.label and string.find(this.label, "^0x") then
|
||||
SetMouseoverUnit(this.label)
|
||||
elseif UnitExists(unitstr) then
|
||||
SetMouseoverUnit(unitstr)
|
||||
end
|
||||
local unitstr = this.label .. this.id
|
||||
if UnitExists(unitstr) then
|
||||
SetMouseoverUnit(unitstr)
|
||||
end
|
||||
|
||||
if this.config.showtooltip == "0" then return end
|
||||
@@ -1200,10 +1194,7 @@ function pfUI.uf.OnEnter()
|
||||
end
|
||||
|
||||
function pfUI.uf.OnLeave()
|
||||
-- Nampower: Clear native mouseover unit
|
||||
if SetMouseoverUnit then
|
||||
SetMouseoverUnit()
|
||||
end
|
||||
SetMouseoverUnit("")
|
||||
|
||||
GameTooltip:FadeOut()
|
||||
end
|
||||
@@ -1528,7 +1519,7 @@ function pfUI.uf:RefreshIndicators(unit)
|
||||
end
|
||||
|
||||
if unit.happinessIcon and unit:GetName() == "pfPet" then -- Happiness Icon
|
||||
local _, pclass = UnitClass("player")
|
||||
local pclass = UnitClassBase("player")
|
||||
if unit.config.happinessicon == "0" or pclass ~= "HUNTER" then
|
||||
unit.happinessIcon:Hide()
|
||||
else
|
||||
@@ -1572,7 +1563,7 @@ function pfUI.uf:UpdateDruidMana(unit)
|
||||
local unitstr = unit.label .. unit.id
|
||||
if not UnitExists(unitstr) then bar:Hide() return end
|
||||
if unit.label ~= "player" then
|
||||
local _, cls = UnitClass(unitstr)
|
||||
local cls = UnitClassBase(unitstr)
|
||||
if cls ~= "DRUID" then bar:Hide() return end
|
||||
end
|
||||
if UnitPowerType(unitstr) == Enum.PowerType.Mana then bar:Hide() return end
|
||||
@@ -2226,7 +2217,7 @@ function pfUI.uf:ClickAction(button)
|
||||
|
||||
-- drop food on petframe
|
||||
if label == "pet" and CursorHasItem() then
|
||||
local _, playerClass = UnitClass("player")
|
||||
local playerClass = UnitClassBase("player")
|
||||
if playerClass == "HUNTER" then
|
||||
DropItemOnUnit("pet")
|
||||
return
|
||||
@@ -2336,7 +2327,7 @@ function pfUI.uf:HideIcon(frame, pos)
|
||||
end
|
||||
|
||||
function pfUI.uf:SetupDebuffFilter(allclasses)
|
||||
local _, myclass = UnitClass("player")
|
||||
local myclass = UnitClassBase("player")
|
||||
local debuffs = {}
|
||||
|
||||
if myclass == "PALADIN" or myclass == "PRIEST" or myclass == "WARLOCK" or allclasses then
|
||||
@@ -2359,7 +2350,7 @@ function pfUI.uf:SetupDebuffFilter(allclasses)
|
||||
end
|
||||
|
||||
function pfUI.uf:SetupBuffIndicators(config)
|
||||
local _, myclass = UnitClass("player")
|
||||
local myclass = UnitClassBase("player")
|
||||
local indicators = {}
|
||||
|
||||
if config.show_buffs == "1" then -- buffs
|
||||
|
||||
+1
-2
@@ -29,8 +29,7 @@ if GetLocale() == "ruRU" then
|
||||
end
|
||||
|
||||
local libdebuff = CreateFrame("Frame", "pfdebuffsScanner", UIParent)
|
||||
local _, class = UnitClass("player")
|
||||
local lastspell
|
||||
local class = UnitClassBase("player")
|
||||
|
||||
-- Nampower Support
|
||||
local hasNampower = false
|
||||
|
||||
+22
-20
@@ -89,7 +89,7 @@ libunitscan:SetScript("OnEvent", function()
|
||||
|
||||
-- update own character details
|
||||
local name = UnitName("player")
|
||||
local _, class = UnitClass("player")
|
||||
local class = UnitClassBase("player")
|
||||
local level = UnitLevel("player")
|
||||
local guild = GetGuildInfo("player")
|
||||
AddData("players", name, class, level, nil, guild)
|
||||
@@ -128,7 +128,7 @@ libunitscan:SetScript("OnEvent", function()
|
||||
local name, class, level, unit, _, guild
|
||||
for i = 1, GetNumPartyMembers() do
|
||||
unit = "party" .. i
|
||||
_, class = UnitClass(unit)
|
||||
class = UnitClassBase(unit)
|
||||
name = UnitName(unit)
|
||||
level = UnitLevel(unit)
|
||||
guild = GetGuildInfo(unit)
|
||||
@@ -149,24 +149,26 @@ libunitscan:SetScript("OnEvent", function()
|
||||
or event == "NAME_PLATE_UNIT_ADDED" and arg1
|
||||
or "mouseover"
|
||||
local name, class, level, elite, guild, _
|
||||
if UnitIsPlayer(scan) then
|
||||
_, class = UnitClass(scan)
|
||||
level = UnitLevel(scan)
|
||||
-- UnitLevel returns -1 for unknown levels, don't overwrite known values
|
||||
level = level > 0 and level or nil
|
||||
name = UnitName(scan)
|
||||
guild = GetGuildInfo(scan)
|
||||
AddData("players", name, class, level, nil, guild)
|
||||
RememberByUnit(scan, name, class)
|
||||
else
|
||||
_, class = UnitClass(scan)
|
||||
elite = UnitClassification(scan)
|
||||
level = UnitLevel(scan)
|
||||
-- UnitLevel returns -1 for unknown levels, don't overwrite known values
|
||||
level = level > 0 and level or nil
|
||||
name = UnitName(scan)
|
||||
guild = UnitSubName(scan)
|
||||
AddData("mobs", name, class, level, elite, guild)
|
||||
if UnitExists(scan) then
|
||||
if UnitIsPlayer(scan) then
|
||||
class = UnitClassBase(scan)
|
||||
level = UnitLevel(scan)
|
||||
-- UnitLevel returns -1 for unknown levels, don't overwrite known values
|
||||
level = level > 0 and level or nil
|
||||
name = UnitName(scan)
|
||||
guild = GetGuildInfo(scan)
|
||||
AddData("players", name, class, level, nil, guild)
|
||||
RememberByUnit(scan, name, class)
|
||||
else
|
||||
class = UnitClassBase(scan)
|
||||
elite = UnitClassification(scan)
|
||||
level = UnitLevel(scan)
|
||||
-- UnitLevel returns -1 for unknown levels, don't overwrite known values
|
||||
level = level > 0 and level or nil
|
||||
name = UnitName(scan)
|
||||
guild = UnitSubName(scan)
|
||||
AddData("mobs", name, class, level, elite, guild)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
pfUI:RegisterModule("actionbar", function ()
|
||||
local _, class = UnitClass("player")
|
||||
local class = UnitClassBase("player")
|
||||
local _, cr, cg, cb = GetUnitColor('player')
|
||||
local er, eg, eb, ea = GetStringColor(pfUI_config.appearance.border.color)
|
||||
|
||||
|
||||
+1
-1
@@ -429,7 +429,7 @@ pfUI:RegisterModule("chat", function ()
|
||||
_G["ChatFrame" .. i .. "TabFlash"].Show = function() return end
|
||||
end
|
||||
|
||||
local _, class = UnitClass("player")
|
||||
local class = UnitClassBase("player")
|
||||
local classColor = PFUI_CLASS_COLORS[class]
|
||||
_G["ChatFrame" .. i .. "TabText"]:SetTextColor((classColor.r + .3) * .5, (classColor.g + .3) * .5, (classColor.b + .3) * .5, 1)
|
||||
_G["ChatFrame" .. i .. "TabText"]:SetFont(panelfont,panelfont_size, "OUTLINE")
|
||||
|
||||
@@ -5,7 +5,7 @@ pfUI:RegisterModule("combopoints", function ()
|
||||
ComboFrame:Hide()
|
||||
ComboFrame:UnregisterAllEvents()
|
||||
|
||||
local _, class = UnitClass("player")
|
||||
local class = UnitClassBase("player")
|
||||
local combo_width = C["unitframes"]["combowidth"]
|
||||
local combo_height = C["unitframes"]["comboheight"]
|
||||
pfUI.combopoints = {}
|
||||
|
||||
@@ -2,7 +2,7 @@ local function getAdjustedTickTimer()
|
||||
local adjustedEnergyTick = 2
|
||||
|
||||
-- Check rogue talents and compute energy tick timing reduction for Combat spec (1.18.0 Blade Rush Talent)
|
||||
if UnitClass("player") == "Rogue" then
|
||||
if UnitClassBase("player") == "ROGUE" then
|
||||
local _, _, _, _, currRank = GetTalentInfo(2, 16)
|
||||
local bladeRushRank = currRank or 0
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
pfUI:RegisterModule("hunterbar", function ()
|
||||
local _,class = UnitClass("player")
|
||||
local class = UnitClassBase("player")
|
||||
if class ~= "HUNTER" or C.bars.hunterbar == "0" then return end
|
||||
|
||||
-- Wing Clip (any rank) and Arcane Shot (any rank) spell IDs.
|
||||
|
||||
@@ -7,8 +7,7 @@ pfUI:RegisterModule("innervatecall", function ()
|
||||
if not GetNampowerVersion then return end
|
||||
|
||||
-- Only load for druids
|
||||
local _, playerClass = UnitClass("player")
|
||||
if playerClass ~= "DRUID" then return end
|
||||
if UnitClassBase("player") ~= "DRUID" then return end
|
||||
|
||||
local INNERVATE_SPELLID = 29166
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ pfUI:RegisterModule("mapcolors", function ()
|
||||
end
|
||||
|
||||
local function ColorizeName(frame)
|
||||
local _, class = UnitClass(frame.unit)
|
||||
local class = UnitClassBase(frame.unit)
|
||||
local color = PFUI_CLASS_COLORS[class]
|
||||
frame.name = frame.name or UnitName(frame.unit)
|
||||
frame.name = '|c'..color.colorStr..frame.name..'|r'
|
||||
|
||||
+24
-15
@@ -58,6 +58,10 @@ pfUI:RegisterModule("nameplates", function ()
|
||||
local inFriendlyZone = false
|
||||
local platecount = 0
|
||||
local registry = {}
|
||||
-- Subset of registry that currently has a unit assigned (between
|
||||
-- NAME_PLATE_UNIT_ADDED and _REMOVED). The central loop iterates this instead
|
||||
-- of the full pool so hidden pool slots aren't touched every tick.
|
||||
local visiblePlates = {}
|
||||
|
||||
local raidGuidCache = {} -- guid -> name (rebuilt on RAID_ROSTER_UPDATE/PARTY_MEMBERS_CHANGED)
|
||||
|
||||
@@ -113,7 +117,7 @@ pfUI:RegisterModule("nameplates", function ()
|
||||
local debuffDisplayBuf = {} -- [i] = { effect, texture, stacks, dtype, duration, timeleft }
|
||||
for i = 1, 16 do debuffDisplayBuf[i] = {} end
|
||||
local threatMemory = {} -- guid -> true if mob had player targeted
|
||||
local debuffSeen = {} -- reusable table for debuff tracking (avoid GC churn)
|
||||
-- local debuffSeen = {} -- reusable table for debuff tracking (avoid GC churn)
|
||||
|
||||
-- PERF: visiblePlateCount maintained event-driven (NAME_PLATE_UNIT_ADDED/_REMOVED)
|
||||
local visiblePlateCount = 0
|
||||
@@ -448,8 +452,7 @@ pfUI:RegisterModule("nameplates", function ()
|
||||
nameplate.debuffs[i]:SetPoint(aligna, nameplate.debuffs[i-limit], alignb, 0, space)
|
||||
end
|
||||
|
||||
nameplate.debuffs[i]:SetWidth(tonumber(C.nameplates.debuffsize))
|
||||
nameplate.debuffs[i]:SetHeight(tonumber(C.nameplates.debuffsize))
|
||||
nameplate.debuffs[i]:SetSize(debuffsize, debuffsize)
|
||||
|
||||
-- Update cooldown display settings
|
||||
if nameplate.debuffs[i].cd then
|
||||
@@ -558,6 +561,7 @@ nameplates:RegisterEvent("SPELL_FAILED_OTHER")
|
||||
-- token itself for token-based UnitX reads (stable per plate lifetime).
|
||||
local plate = C_NamePlate.GetNamePlateForUnit(arg1)
|
||||
if plate and plate.nameplate then
|
||||
visiblePlates[plate] = plate
|
||||
local guid = UnitGUID(arg1)
|
||||
plate.nameplate.cachedGuid = guid
|
||||
plate.nameplate.unit = arg1
|
||||
@@ -576,6 +580,8 @@ nameplates:RegisterEvent("SPELL_FAILED_OTHER")
|
||||
visiblePlateCount = visiblePlateCount > 0 and visiblePlateCount - 1 or 0
|
||||
-- arg1 = "nameplateN" unit token; UnitGUID still resolves inside the
|
||||
-- handler (the slot is freed after dispatch returns)
|
||||
local plate = C_NamePlate.GetNamePlateForUnit(arg1)
|
||||
if plate then visiblePlates[plate] = nil end
|
||||
local guid = UnitGUID(arg1)
|
||||
if guid then
|
||||
if debuffCache[guid] then debuffCache[guid] = nil end
|
||||
@@ -583,7 +589,6 @@ nameplates:RegisterEvent("SPELL_FAILED_OTHER")
|
||||
if combatColorCache[guid] then combatColorCache[guid] = nil end
|
||||
if castState[guid] then castState[guid] = nil end
|
||||
if plateByGuid[guid] then plateByGuid[guid] = nil end
|
||||
local plate = C_NamePlate.GetNamePlateForUnit(arg1)
|
||||
if plate and plate.nameplate and plate.nameplate.cachedGuid == guid then
|
||||
plate.nameplate.cachedGuid = nil
|
||||
plate.nameplate.unit = nil
|
||||
@@ -684,18 +689,23 @@ nameplates:RegisterEvent("SPELL_FAILED_OTHER")
|
||||
frameState.hasTarget, frameState.targetGuid = UnitExists("target")
|
||||
frameState.mouseoverGuid = UnitGUID("mouseover")
|
||||
|
||||
-- propagate events to all nameplates
|
||||
-- propagate a global refresh to all active plates. Set the flag on the
|
||||
-- overlay (nameplate) -- that's what OnUpdate reads for hasEventUpdate; the
|
||||
-- base frame's .eventcache is never read. Only visible plates need it
|
||||
-- (hidden pool slots refresh on OnShow), matching the OnUpdate loop.
|
||||
if this.eventcache then
|
||||
this.eventcache = nil
|
||||
for plate in pairs(registry) do
|
||||
plate.eventcache = true
|
||||
for plate in pairs(visiblePlates) do
|
||||
plate.nameplate.eventcache = true
|
||||
end
|
||||
end
|
||||
|
||||
-- visiblePlateCount is maintained event-driven via NAME_PLATE_UNIT_ADDED/_REMOVED.
|
||||
|
||||
-- Central OnUpdate for all visible plates
|
||||
for plate in pairs(registry) do
|
||||
-- Central OnUpdate for active plates only. visiblePlates is maintained by
|
||||
-- NAME_PLATE_UNIT_ADDED/_REMOVED, so hidden pool slots aren't iterated; the
|
||||
-- IsVisible guard stays as a cheap safety net for transient hides.
|
||||
for plate in pairs(visiblePlates) do
|
||||
if plate:IsVisible() then
|
||||
nameplates.OnUpdate(plate, frameState)
|
||||
end
|
||||
@@ -728,7 +738,7 @@ nameplates:RegisterEvent("SPELL_FAILED_OTHER")
|
||||
nameplates.OnCreate = function(frame)
|
||||
local parent = frame or this
|
||||
platecount = platecount + 1
|
||||
platename = "pfNamePlate" .. platecount
|
||||
local platename = "pfNamePlate" .. platecount
|
||||
|
||||
-- create pfUI nameplate overlay
|
||||
local nameplate = CreateFrame("Button", platename, parent)
|
||||
@@ -793,8 +803,7 @@ nameplates:RegisterEvent("SPELL_FAILED_OTHER")
|
||||
|
||||
nameplate.totem = CreateFrame("Frame", nil, nameplate)
|
||||
nameplate.totem:SetPoint("CENTER", nameplate, "CENTER", 0, 0)
|
||||
nameplate.totem:SetHeight(32)
|
||||
nameplate.totem:SetWidth(32)
|
||||
nameplate.totem:SetSize(32, 32)
|
||||
nameplate.totem.icon = nameplate.totem:CreateTexture(nil, "OVERLAY")
|
||||
nameplate.totem.icon:SetTexCoord(.078, .92, .079, .937)
|
||||
nameplate.totem.icon:SetAllPoints()
|
||||
@@ -882,11 +891,11 @@ nameplates:RegisterEvent("SPELL_FAILED_OTHER")
|
||||
|
||||
local plate_width = C.nameplates.width + 50
|
||||
local plate_height = C.nameplates.heighthealth + font_size + 5
|
||||
local plate_height_cast = C.nameplates.heighthealth + font_size + 5 + C.nameplates.heightcast + 5
|
||||
-- local plate_height_cast = C.nameplates.heighthealth + font_size + 5 + C.nameplates.heightcast + 5
|
||||
local combo_size = 5
|
||||
|
||||
local width = tonumber(C.nameplates.width)
|
||||
local debuffsize = tonumber(C.nameplates.debuffsize)
|
||||
-- local width = tonumber(C.nameplates.width)
|
||||
-- local debuffsize = tonumber(C.nameplates.debuffsize)
|
||||
local healthoffset = tonumber(C.nameplates.health.offset)
|
||||
local orientation = C.nameplates.verticalhealth == "1" and "VERTICAL" or "HORIZONTAL"
|
||||
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ pfUI:RegisterModule("player", function ()
|
||||
playerFrame.infoTopCenterText:SetHeight(14)
|
||||
end
|
||||
|
||||
local _, myclass = UnitClass("player")
|
||||
local myclass = UnitClassBase("player")
|
||||
playerFrame.myclass = myclass
|
||||
playerFrame.isSpellCaster = myclass ~= "WARRIOR" and myclass ~= "ROGUE" and myclass ~= "HUNTER"
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ pfUI:RegisterModule("swingtimer", function ()
|
||||
local ohR, ohG, ohB, ohA = ParseColor(C.unitframes.swingtimerohcolor, 0.3, 0.8, 0.3, 1)
|
||||
local raR, raG, raB, raA = ParseColor(C.unitframes.swingtimerrangedcolor, 0.3, 0.6, 1.0, 1)
|
||||
local rwR, rwG, rwB, rwA = ParseColor(C.unitframes.swingtimerrangedwarncolor, 0.9, 0.0, 0.0, 1)
|
||||
local isHunter = UnitClass("player") == "Hunter"
|
||||
local isHunter = UnitClassBase("player") == "HUNTER"
|
||||
local mhDefaultR, mhDefaultG, mhDefaultB = mhR, mhG, mhB
|
||||
|
||||
|
||||
@@ -908,7 +908,7 @@ pfUI:RegisterModule("swingtimer", function ()
|
||||
S.autoAttackActive = false
|
||||
|
||||
elseif event == "PLAYER_ENTERING_WORLD" then
|
||||
local _, class = UnitClass("player")
|
||||
local class = UnitClassBase("player")
|
||||
S.isWarrior = (class == "WARRIOR")
|
||||
S.isDruid = (class == "DRUID")
|
||||
UpdateWeaponSpeeds()
|
||||
|
||||
+2
-2
@@ -201,7 +201,7 @@ pfUI:RegisterModule("tooltip", function ()
|
||||
local pvpname = UnitPVPName(unit)
|
||||
local name = UnitName(unit)
|
||||
local validTarget, target = pcall(UnitName, unit .. 'target')
|
||||
local _, class = UnitClass(unit)
|
||||
local class = UnitClassBase(unit)
|
||||
local guild, rankstr, rankid = GetGuildInfo(unit)
|
||||
local reaction = UnitReaction(unit, "player")
|
||||
local pvptitle = gsub(gsub(pvpname or name, name, "", 1), "^%s*(.-)%s*$", "%1")
|
||||
@@ -236,7 +236,7 @@ pfUI:RegisterModule("tooltip", function ()
|
||||
end
|
||||
|
||||
if validTarget and target then
|
||||
local _, targetClass = UnitClass(unit .. "target")
|
||||
local targetClass = UnitClassBase(unit .. "target")
|
||||
local targetReaction = UnitReaction("player",unit .. "target")
|
||||
if UnitIsPlayer(unit .. "target") and targetClass then
|
||||
local color = PFUI_CLASS_COLORS[targetClass]
|
||||
|
||||
@@ -128,7 +128,7 @@ pfUI:RegisterModule("tracking", function ()
|
||||
end)
|
||||
|
||||
function pfUI.tracking:RefreshSpells()
|
||||
local _, playerClass = UnitClass("player")
|
||||
local playerClass = UnitClassBase("player")
|
||||
local isCatForm = pfUI.tracking:PlayerIsDruidInCatForm(playerClass)
|
||||
|
||||
-- Build set of valid SpellIDs for this class
|
||||
|
||||
@@ -309,7 +309,7 @@ function pfUI:CheckNewModules()
|
||||
pfUI_init.seen_modules = pfUI_init.seen_modules or {}
|
||||
|
||||
local pending = 0
|
||||
local _, playerClass = UnitClass("player")
|
||||
local playerClass = UnitClassBase("player")
|
||||
for _, entry in pairs(pfUI.new_modules) do
|
||||
if not pfUI_init.seen_modules[entry.name] and pfUI_init["finalize"] then
|
||||
if not entry.class or entry.class == playerClass then
|
||||
|
||||
@@ -105,7 +105,7 @@ pfUI:RegisterSkin("Options - New", function ()
|
||||
local er, eg, eb = pfUI.api.GetStringColor(pfUI_config.appearance.border.color)
|
||||
btn:SetBackdropColor(br, bg, bb, 0.75)
|
||||
btn:SetBackdropBorderColor(er, eg, eb, 1)
|
||||
local _, class = UnitClass("player")
|
||||
local class = UnitClassBase("player")
|
||||
local color = PFUI_CLASS_COLORS[class]
|
||||
SetHighlight(btn, color.r, color.g, color.b)
|
||||
btn:SetFont(pfUI.font_default, pfUI_config.global.font_size, "OUTLINE")
|
||||
|
||||
Reference in New Issue
Block a user