Add power bars for healers and blood deathknights
This commit is contained in:
@@ -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")
|
||||||
@@ -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()
|
||||||
|
Reference in New Issue
Block a user