Add power bars for healers and blood deathknights

This commit is contained in:
2023-03-18 06:25:25 +01:00
parent 5b18d2a39a
commit 16da36d353

View File

@@ -48,7 +48,9 @@ function UnitFrame:Init(unit, width, height, hideInRaid)
self.hideInRaid = hideInRaid or false
local secure = self:CreateSecureFrame(width, height)
secure:Hide()
self.hp = StatusBar:new(self, width, height)
self.hp = StatusBar:new(self, width, height, 0, true)
self.power = StatusBar:new(self, width, 6, 2, false)
self.power:Hide()
self.auras = AuraList:new(self)
local overlays = CreateFrame("Frame", nil, secure)
overlays:SetFrameStrata("MEDIUM")
@@ -82,9 +84,9 @@ function UnitFrame:CreateName()
self.name = name
name:SetFont("Interface\\AddOns\\OmicronFrames\\media\\fonts\\roboto\\Roboto-Bold.ttf", 13, "")
name:SetTextColor(0.8, 0.6, 0.1)
name:SetShadowColor(0, 0, 0)
name:SetShadowOffset(1, -1)
name:SetTextColor(0.8, 0.6, 0.1)
name:SetShadowColor(0, 0, 0)
name:SetShadowOffset(1, -1)
name:SetPoint("CENTER")
name:SetText("")
name:Show()
@@ -165,10 +167,10 @@ function UnitFrame:CreateSecureFrame(width, height)
secure:SetAttribute("unit", self.unit)
secure:SetSize(width, height)
secure:RegisterForClicks("AnyDown")
self:PrepareWheelBinds()
-- No modifiers
secure:SetAttribute("type1", "target")
self:SetMacroAction("type2", "/use [@UNIT,dead,help]Ancestral Vision; [@UNIT]Chain Heal")
@@ -238,11 +240,11 @@ function UnitFrame:RegisterEvents()
secure:SetScript("OnShow", function(frame, event, ...)
self:OnShow()
end)
secure:SetScript("OnHide", function(frame, event, ...)
self:OnHide()
end)
secure:SetScript("OnEvent", function(frame, event, ...)
self[event](self, ...)
end)
@@ -270,7 +272,7 @@ function UnitFrame:HasUnitChanged()
self.guid = nil
return false
end
local guid = UnitGUID(unit)
if self.guid == guid then
return false
@@ -320,12 +322,59 @@ function UnitFrame:UNIT_NAME_UPDATE()
self:UpdateName()
end
function UnitFrame:ROLE_CHANGED_INFORM(name, changer, old, new)
if UnitName(self.unit) == name then
self:UpdateRole(new)
end
end
function UnitFrame:UNIT_POWER_UPDATE()
self:UpdatePower()
end
function UnitFrame:UpdateRole(role)
if role == nil then
role = UnitGroupRolesAssigned(self.unit)
end
if role == "HEALER" then
self:EnablePower(Enum.PowerType.Mana)
elseif role == "TANK" and select(3, UnitClass(self.unit)) == 6 then
self:EnablePower("RUNIC")
else
self:DisablePower()
end
end
function UnitFrame:UpdatePower()
local power = UnitPower(self.unit, self.powerType)
local max = UnitPowerMax(self.unit, self.powerType)
self.power:SetRange(0, max)
self.power:SetValue(power)
end
function UnitFrame:EnablePower(type)
self.powerType = type
local color = PowerBarColor[type]
self.power:SetColor(color.r, color.g, color.b)
self.power:Show()
self.secureFrame:RegisterUnitEvent("UNIT_POWER_UPDATE", self.unit)
self:UpdatePower()
end
function UnitFrame:DisablePower()
self.powerType = nil
self.secureFrame:UnregisterEvent("UNIT_POWER_UPDATE")
self.power:Hide()
end
function UnitFrame:OnShow()
self.secureFrame:RegisterEvent("ROLE_CHANGED_INFORM")
self:StartRangeTicker()
self:UpdateAll(self:HasUnitChanged())
end
function UnitFrame:OnHide()
self.secureFrame:UnregisterEvent("ROLE_CHANGED_INFORM")
self.guid = nil
self:StopRangeTicker()
end
@@ -341,13 +390,14 @@ function UnitFrame:UpdateAll(unitChanged)
self:UpdateHealthColor()
self:UpdateRange()
self:UpdateName()
self:UpdateRole() -- Also calls UpdatePower if power is visible
end
function UnitFrame:UpdateHealth()
local unit = self.unit
local val = UnitHealth(unit)
local max = UnitHealthMax(unit)
self.hp:SetRange(0, max)
self.hp:SetValue(val)
end