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
|
||||
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
|
||||
|
Reference in New Issue
Block a user