Add bar overlays for absorb and heal absorb
This commit is contained in:
@@ -50,7 +50,9 @@ local colors = {
|
||||
immune = { 0.0, 0.2, 0.4 },
|
||||
bomb = { 1.0, 0.7, 0.7 },
|
||||
cyan = { 0.0, 0.8, 0.8 },
|
||||
white = { 1.0, 1.0, 1.0 }
|
||||
white = { 1.0, 1.0, 1.0 },
|
||||
shield = { 0.85, .95, 1.0 },
|
||||
absorb = { 0.5, .4, .75 },
|
||||
}
|
||||
|
||||
-- This trucates _codepoints_ not graphemes. If combination codepoints are
|
||||
@@ -86,11 +88,28 @@ function UnitFrame:Init(unit, config)
|
||||
|
||||
self:SetMouseBinds(config.mouse)
|
||||
|
||||
self.hp = StatusBar:new(self, width, height, 0, true)
|
||||
self.power = StatusBar:new(self, width, 6, 2, false)
|
||||
local texture = "Interface\\Addons\\OmicronFrames\\media\\textures\\bar_subtle_diagonal"
|
||||
local texture_top = "Interface\\Addons\\OmicronFrames\\media\\textures\\bar_subtle_diagonal_top"
|
||||
local texture_bot = "Interface\\Addons\\OmicronFrames\\media\\textures\\bar_subtle_diagonal_bottom"
|
||||
|
||||
self.hp = StatusBar:new(self, width, height, 0, true, texture, texture)
|
||||
|
||||
self.power = StatusBar:new(self, width, 6, 2, false, texture, texture)
|
||||
self.power:Hide()
|
||||
|
||||
self.absorb = StatusBar:new(self, width, height, 1, true, texture_top)
|
||||
self.absorb:SetColor(unpack(colors.absorb))
|
||||
self.absorb:SetFillStyle("REVERSE")
|
||||
|
||||
self.shield = StatusBar:new(self, width, height, 1, true, texture_bot)
|
||||
self.shield:SetColor(unpack(colors.shield))
|
||||
self.shield:SetRange(0, 1)
|
||||
self.shield:SetValue(0.6)
|
||||
self.shield:SetFillStyle("REVERSE")
|
||||
|
||||
self.auras = AuraList:new(self)
|
||||
|
||||
|
||||
local overlays = CreateFrame("Frame", nil, secure)
|
||||
overlays:SetFrameStrata("MEDIUM")
|
||||
overlays:SetFrameLevel(100)
|
||||
@@ -410,6 +429,8 @@ function UnitFrame:RegisterEvents()
|
||||
secure:RegisterUnitEvent("UNIT_HEALTH", unit)
|
||||
secure:RegisterUnitEvent("UNIT_MAXHEALTH", unit)
|
||||
secure:RegisterUnitEvent("UNIT_NAME_UPDATE", unit)
|
||||
secure:RegisterUnitEvent("UNIT_ABSORB_AMOUNT_CHANGED", unit)
|
||||
secure:RegisterUnitEvent("UNIT_HEAL_ABSORB_AMOUNT_CHANGED", unit)
|
||||
end
|
||||
|
||||
-- returns whether or not the unit guid has changed since the last call to this
|
||||
@@ -430,6 +451,22 @@ function UnitFrame:HasUnitChanged()
|
||||
end
|
||||
end
|
||||
|
||||
function UnitFrame:UNIT_HEAL_ABSORB_AMOUNT_CHANGED()
|
||||
if self:HasUnitChanged() then
|
||||
self:UpdateAll(true)
|
||||
return
|
||||
end
|
||||
self:UpdateAbsorb()
|
||||
end
|
||||
|
||||
function UnitFrame:UNIT_ABSORB_AMOUNT_CHANGED()
|
||||
if self:HasUnitChanged() then
|
||||
self:UpdateAll(true)
|
||||
return
|
||||
end
|
||||
self:UpdateShield()
|
||||
end
|
||||
|
||||
function UnitFrame:UNIT_AURA(unit, info)
|
||||
if self:HasUnitChanged() then
|
||||
self:UpdateAll(true)
|
||||
@@ -536,6 +573,8 @@ function UnitFrame:UpdateAll(unitChanged)
|
||||
end
|
||||
self:UpdateHealth()
|
||||
self:UpdateHealthColor()
|
||||
self:UpdateAbsorb()
|
||||
self:UpdateShield()
|
||||
self:UpdateRange()
|
||||
self:UpdateName()
|
||||
self:UpdateRole() -- Also calls UpdatePower if power is visible
|
||||
@@ -550,6 +589,32 @@ function UnitFrame:UpdateHealth()
|
||||
self.hp:SetValue(val)
|
||||
end
|
||||
|
||||
function UnitFrame:UpdateShield()
|
||||
local unit = self.unit
|
||||
local val = UnitGetTotalAbsorbs(unit)
|
||||
local max = UnitHealthMax(unit)
|
||||
if val <= 0 then
|
||||
self.shield:Hide()
|
||||
else
|
||||
self.shield:SetRange(0, max)
|
||||
self.shield:SetValue(val)
|
||||
self.shield:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function UnitFrame:UpdateAbsorb()
|
||||
local unit = self.unit
|
||||
local val = UnitGetTotalHealAbsorbs(unit)
|
||||
local max = UnitHealthMax(unit)
|
||||
if val <= 0 then
|
||||
self.absorb:Hide()
|
||||
else
|
||||
self.absorb:SetRange(0, max)
|
||||
self.absorb:SetValue(val)
|
||||
self.absorb:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function UnitFrame:UpdateHealthColor()
|
||||
local unit = self.unit
|
||||
local val = UnitHealth(unit)
|
||||
|
Reference in New Issue
Block a user