From d73c4de6957bbc0ee704cab7d5d1e96ef45ccfa5 Mon Sep 17 00:00:00 2001 From: Brues <5278969+brues-code@users.noreply.github.com> Date: Fri, 24 Jul 2026 16:37:34 -0500 Subject: [PATCH] Modernize power-API usage onto ClassicAPI - Replace all UnitMana/UnitManaMax calls with UnitPower/UnitPowerMax. The no-arg form returns the unit's primary power from the same field vanilla's UnitMana read, so these are behavior-preserving. Drops two dead UnitMana/UnitManaMax local caches in nameplates.lua. - Replace magic power-type numbers (0/1/2/3) with Enum.PowerType.Mana/Rage/ Focus/Energy in the GetUnitStats branches, the power-bar color block, the druid mana bar, GetStatusValue's powerdyn, and energytick's mode checks. --- api/unitframes.lua | 53 +++++++++++++++++++++--------------------- modules/energytick.lua | 12 +++++----- modules/nameplates.lua | 2 -- 3 files changed, 33 insertions(+), 34 deletions(-) diff --git a/api/unitframes.lua b/api/unitframes.lua index dfd906fe..55efa458 100644 --- a/api/unitframes.lua +++ b/api/unitframes.lua @@ -162,27 +162,27 @@ function pfUI.api.GetUnitStats(unitstr, trackStats) end -- Get power values based on type - if powerType == 1 then + if powerType == Enum.PowerType.Rage then -- Rage (Nampower stores rage * 10, maxPower2 stores maxRage * 10) local rage = GetUnitField(guid, "power2") local maxRage = GetUnitField(guid, "maxPower2") - power = rage and math.floor(rage / 10) or UnitMana(unitstr) - maxPower = maxRage and math.floor(maxRage / 10) or UnitManaMax(unitstr) - elseif powerType == 3 then + power = rage and math.floor(rage / 10) or UnitPower(unitstr) + maxPower = maxRage and math.floor(maxRage / 10) or UnitPowerMax(unitstr) + elseif powerType == Enum.PowerType.Energy then -- Energy - power = GetUnitField(guid, "power4") or UnitMana(unitstr) + power = GetUnitField(guid, "power4") or UnitPower(unitstr) if power then power = math.floor(power) end - maxPower = GetUnitField(guid, "maxPower4") or UnitManaMax(unitstr) - elseif powerType == 2 then + maxPower = GetUnitField(guid, "maxPower4") or UnitPowerMax(unitstr) + elseif powerType == Enum.PowerType.Focus then -- Focus (Hunter pets use power3) - power = GetUnitField(guid, "power3") or UnitMana(unitstr) + power = GetUnitField(guid, "power3") or UnitPower(unitstr) if power then power = math.floor(power) end - maxPower = GetUnitField(guid, "maxPower3") or UnitManaMax(unitstr) + maxPower = GetUnitField(guid, "maxPower3") or UnitPowerMax(unitstr) else -- Mana (default) - power = GetUnitField(guid, "power1") or UnitMana(unitstr) - maxPower = GetUnitField(guid, "maxPower1") or UnitManaMax(unitstr) + power = GetUnitField(guid, "power1") or UnitPower(unitstr) + maxPower = GetUnitField(guid, "maxPower1") or UnitPowerMax(unitstr) end -- Check if Nampower gave valid health data @@ -214,8 +214,8 @@ function pfUI.api.GetUnitStats(unitstr, trackStats) hp = UnitHealth(unitstr) or 0 maxHp = UnitHealthMax(unitstr) or 1 powerType = UnitPowerType(unitstr) or 0 - power = UnitMana(unitstr) or 0 - maxPower = UnitManaMax(unitstr) or 1 + power = UnitPower(unitstr) or 0 + maxPower = UnitPowerMax(unitstr) or 1 -- Track Fallback usage - NUR bei echten Änderungen if trackStats and not usedNampower then @@ -565,7 +565,7 @@ function pfUI.uf:UpdateConfig() f.druidmana._hasbd = true end - local tr, tg, tb = ManaBarColor[0].r, ManaBarColor[0].g, ManaBarColor[0].b + local tr, tg, tb = ManaBarColor[Enum.PowerType.Mana].r, ManaBarColor[Enum.PowerType.Mana].g, ManaBarColor[Enum.PowerType.Mana].b if C.unitframes.pastel == "1" then tr, tg, tb = (tr + .75) * .5, (tg + .75) * .5, (tb + .75) * .5 end @@ -1689,8 +1689,9 @@ function pfUI.uf:CreateUnitFrame(unit, id, config, tick) f.power.bar = CreateStatusBar(nil, f.power) -- Druid secondary mana bar: shows base mana (read via ClassicAPI - -- UnitPower(unit, 0), which works regardless of the active power) while - -- shapeshifted into a form that uses energy/rage. Player + target only; + -- UnitPower(unit, Enum.PowerType.Mana), which works regardless of the active + -- power) while shapeshifted into a form that uses energy/rage. Player + + -- target only; -- styled/positioned in UpdateConfig, driven in UpdateDruidMana. if C.unitframes.druidmanabar == "1" and (f.label == "player" or f.label == "target") then f.druidmana = CreateFrame("StatusBar", "pfDruidMana_" .. f.label .. f.id, f) @@ -1910,8 +1911,8 @@ function pfUI.uf:RefreshIndicators(unit) end -- Druid secondary mana bar update. Reads base mana with ClassicAPI --- UnitPower(unit, 0)/UnitPowerMax(unit, 0), which return the mana slot --- regardless of the unit's active power -- so it works while shapeshifted, +-- UnitPower/UnitPowerMax(unit, Enum.PowerType.Mana), which return the mana +-- slot regardless of the unit's active power -- so it works while shapeshifted, -- with no nampower/GetUnitField dependency. Shown only while off mana -- (Cat=energy, Bear=rage); non-player frames only for druid units. function pfUI.uf:UpdateDruidMana(unit) @@ -1922,8 +1923,8 @@ function pfUI.uf:UpdateDruidMana(unit) local _, cls = UnitClass(unitstr) if cls ~= "DRUID" then bar:Hide() return end end - if UnitPowerType(unitstr) == 0 then bar:Hide() return end - local mana, maxmana = UnitPower(unitstr, 0), UnitPowerMax(unitstr, 0) + if UnitPowerType(unitstr) == Enum.PowerType.Mana then bar:Hide() return end + local mana, maxmana = UnitPower(unitstr, Enum.PowerType.Mana), UnitPowerMax(unitstr, Enum.PowerType.Mana) if not maxmana or maxmana == 0 then bar:Hide() return end bar:SetMinMaxValues(0, maxmana) bar:SetValue(mana) @@ -2439,13 +2440,13 @@ function pfUI.uf:RefreshUnit(unit, component) local r, g, b, a = .5, .5, .5, 1 local utype = UnitPowerType(unitstr) - if utype == 0 then + if utype == Enum.PowerType.Mana then r, g, b, a = GetStringColor(mana) - elseif utype == 1 then + elseif utype == Enum.PowerType.Rage then r, g, b, a = GetStringColor(rage) - elseif utype == 2 then + elseif utype == Enum.PowerType.Focus then r, g, b, a = GetStringColor(focus) - elseif utype == 3 then + elseif utype == Enum.PowerType.Energy then r, g, b, a = GetStringColor(energy) end @@ -3032,7 +3033,7 @@ function pfUI.uf:GetStatusValue(unit, pos) elseif config == "powermax" then return unit:GetColor("power") .. pfUI.api.Abbreviate(mpmax) elseif config == "powerperc" then - local perc = UnitManaMax(unitstr) > 0 and ceil(mp / mpmax * 100) or 0 + local perc = UnitPowerMax(unitstr) > 0 and ceil(mp / mpmax * 100) or 0 return unit:GetColor("power") .. perc elseif config == "powermiss" then local power = ceil(mp - mpmax) @@ -3043,7 +3044,7 @@ function pfUI.uf:GetStatusValue(unit, pos) end elseif config == "powerdyn" then -- show percentage when only mana is less than 100% - if mp ~= mpmax and UnitPowerType(unitstr) == 0 then + if mp ~= mpmax and UnitPowerType(unitstr) == Enum.PowerType.Mana then return unit:GetColor("power") .. pfUI.api.Abbreviate(mp) .. " - " .. ceil(mp / mpmax * 100) .. "%" else return unit:GetColor("power") .. pfUI.api.Abbreviate(mp) diff --git a/modules/energytick.lua b/modules/energytick.lua index f991fd5a..adc4a36f 100644 --- a/modules/energytick.lua +++ b/modules/energytick.lua @@ -32,10 +32,10 @@ pfUI:RegisterModule("energytick", function() energytick:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS") energytick:SetScript("OnEvent", function() - if UnitPowerType("player") == 0 and C.unitframes.player.manatick == "1" then + if UnitPowerType("player") == Enum.PowerType.Mana and C.unitframes.player.manatick == "1" then this.mode = "MANA" this:Show() - elseif UnitPowerType("player") == 3 and C.unitframes.player.energy == "1" then + elseif UnitPowerType("player") == Enum.PowerType.Energy and C.unitframes.player.energy == "1" then this.mode = "ENERGY" this:Show() else @@ -51,11 +51,11 @@ pfUI:RegisterModule("energytick", function() end if event == "PLAYER_ENTERING_WORLD" then - this.lastMana = UnitMana("player") + this.lastMana = UnitPower("player") end if (event == "UNIT_MANA" or event == "UNIT_ENERGY") and arg1 == "player" then - this.currentMana = UnitMana("player") + this.currentMana = UnitPower("player") local diff = 0 if this.lastMana then diff = this.currentMana - this.lastMana @@ -64,7 +64,7 @@ pfUI:RegisterModule("energytick", function() if this.mode == "MANA" and diff < 0 then this.target = 5 elseif this.mode == "MANA" and diff > 0 then - if UnitMana("player") >= UnitManaMax("player") then + if UnitPower("player") >= UnitPowerMax("player") then this.start = nil this.spark:SetAlpha(0) this:Hide() @@ -105,7 +105,7 @@ pfUI:RegisterModule("energytick", function() if this.current > this.max then -- Don't restart tick timer if mana is full - if this.mode == "MANA" and UnitMana("player") >= UnitManaMax("player") then + if this.mode == "MANA" and UnitPower("player") >= UnitPowerMax("player") then this.start = nil this.spark:SetAlpha(0) return diff --git a/modules/nameplates.lua b/modules/nameplates.lua index 64ea43c4..6e158ea6 100644 --- a/modules/nameplates.lua +++ b/modules/nameplates.lua @@ -15,8 +15,6 @@ pfUI:RegisterModule("nameplates", function () local UnitCanAssist = UnitCanAssist local UnitHealth = UnitHealth local UnitHealthMax = UnitHealthMax - local UnitMana = UnitMana - local UnitManaMax = UnitManaMax local pairs = pairs local tonumber = tonumber local strlower = strlower