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")
|
||||||
@@ -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()
|
||||||
@@ -165,10 +167,10 @@ function UnitFrame:CreateSecureFrame(width, height)
|
|||||||
secure:SetAttribute("unit", self.unit)
|
secure:SetAttribute("unit", self.unit)
|
||||||
|
|
||||||
secure:SetSize(width, height)
|
secure:SetSize(width, height)
|
||||||
|
|
||||||
secure:RegisterForClicks("AnyDown")
|
secure:RegisterForClicks("AnyDown")
|
||||||
self:PrepareWheelBinds()
|
self:PrepareWheelBinds()
|
||||||
|
|
||||||
-- No modifiers
|
-- No modifiers
|
||||||
secure:SetAttribute("type1", "target")
|
secure:SetAttribute("type1", "target")
|
||||||
self:SetMacroAction("type2", "/use [@UNIT,dead,help]Ancestral Vision; [@UNIT]Chain Heal")
|
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, ...)
|
secure:SetScript("OnShow", function(frame, event, ...)
|
||||||
self:OnShow()
|
self:OnShow()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
secure:SetScript("OnHide", function(frame, event, ...)
|
secure:SetScript("OnHide", function(frame, event, ...)
|
||||||
self:OnHide()
|
self:OnHide()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
secure:SetScript("OnEvent", function(frame, event, ...)
|
secure:SetScript("OnEvent", function(frame, event, ...)
|
||||||
self[event](self, ...)
|
self[event](self, ...)
|
||||||
end)
|
end)
|
||||||
@@ -270,7 +272,7 @@ function UnitFrame:HasUnitChanged()
|
|||||||
self.guid = nil
|
self.guid = nil
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local guid = UnitGUID(unit)
|
local guid = UnitGUID(unit)
|
||||||
if self.guid == guid then
|
if self.guid == guid then
|
||||||
return false
|
return false
|
||||||
@@ -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,13 +390,14 @@ 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()
|
||||||
local unit = self.unit
|
local unit = self.unit
|
||||||
local val = UnitHealth(unit)
|
local val = UnitHealth(unit)
|
||||||
local max = UnitHealthMax(unit)
|
local max = UnitHealthMax(unit)
|
||||||
|
|
||||||
self.hp:SetRange(0, max)
|
self.hp:SetRange(0, max)
|
||||||
self.hp:SetValue(val)
|
self.hp:SetValue(val)
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user