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 self.hideInRaid = hideInRaid or false
local secure = self:CreateSecureFrame(width, height) local secure = self:CreateSecureFrame(width, height)
secure:Hide() 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) self.auras = AuraList:new(self)
local overlays = CreateFrame("Frame", nil, secure) local overlays = CreateFrame("Frame", nil, secure)
overlays:SetFrameStrata("MEDIUM") overlays:SetFrameStrata("MEDIUM")
@@ -82,9 +84,9 @@ function UnitFrame:CreateName()
self.name = name self.name = name
name:SetFont("Interface\\AddOns\\OmicronFrames\\media\\fonts\\roboto\\Roboto-Bold.ttf", 13, "") name:SetFont("Interface\\AddOns\\OmicronFrames\\media\\fonts\\roboto\\Roboto-Bold.ttf", 13, "")
name:SetTextColor(0.8, 0.6, 0.1) name:SetTextColor(0.8, 0.6, 0.1)
name:SetShadowColor(0, 0, 0) name:SetShadowColor(0, 0, 0)
name:SetShadowOffset(1, -1) name:SetShadowOffset(1, -1)
name:SetPoint("CENTER") name:SetPoint("CENTER")
name:SetText("") name:SetText("")
name:Show() name:Show()
@@ -320,12 +322,59 @@ function UnitFrame:UNIT_NAME_UPDATE()
self:UpdateName() self:UpdateName()
end 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() function UnitFrame:OnShow()
self.secureFrame:RegisterEvent("ROLE_CHANGED_INFORM")
self:StartRangeTicker() self:StartRangeTicker()
self:UpdateAll(self:HasUnitChanged()) self:UpdateAll(self:HasUnitChanged())
end end
function UnitFrame:OnHide() function UnitFrame:OnHide()
self.secureFrame:UnregisterEvent("ROLE_CHANGED_INFORM")
self.guid = nil self.guid = nil
self:StopRangeTicker() self:StopRangeTicker()
end end
@@ -341,6 +390,7 @@ function UnitFrame:UpdateAll(unitChanged)
self:UpdateHealthColor() self:UpdateHealthColor()
self:UpdateRange() self:UpdateRange()
self:UpdateName() self:UpdateName()
self:UpdateRole() -- Also calls UpdatePower if power is visible
end end
function UnitFrame:UpdateHealth() function UnitFrame:UpdateHealth()