You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.7 KiB
112 lines
2.7 KiB
local PA = _G.ProjectAzilroka
|
|
local oUF = PA.oUF
|
|
if not oUF then
|
|
return
|
|
end
|
|
|
|
local function UpdateColor(self, event, unit)
|
|
local element = self.PBHealth
|
|
|
|
local r, g, b, t
|
|
if(element.colorClass) then
|
|
local _, class = UnitClass("player")
|
|
t = self.colors.class[class]
|
|
elseif (element.colorSmooth) then
|
|
r, g, b = self:ColorGradient(element.cur or 1, element.max or 1, unpack(element.smoothGradient or self.colors.smooth))
|
|
elseif (element.colorHealth) then
|
|
t = self.colors.health
|
|
end
|
|
|
|
if (t) then
|
|
r, g, b = t[1], t[2], t[3]
|
|
end
|
|
|
|
if (b) then
|
|
element:SetStatusBarColor(r, g, b)
|
|
|
|
local bg = element.bg
|
|
if (bg) then
|
|
local mu = bg.multiplier or 1
|
|
bg:SetVertexColor(r * mu, g * mu, b * mu)
|
|
end
|
|
end
|
|
|
|
if (element.PostUpdateColor) then
|
|
element:PostUpdateColor(unit, r, g, b)
|
|
end
|
|
end
|
|
|
|
local function ColorPath(self, ...)
|
|
(self.PBHealth.UpdateColor or UpdateColor)(self, ...)
|
|
end
|
|
|
|
local function Update(self, event, unit)
|
|
local petInfo = self.pbouf_petinfo
|
|
if not petInfo then
|
|
return
|
|
end
|
|
|
|
local element = self.PBHealth
|
|
|
|
if (element.PreUpdate) then
|
|
element:PreUpdate(unit)
|
|
end
|
|
|
|
local cur, max = C_PetBattles.GetHealth(petInfo.petOwner, petInfo.petIndex), C_PetBattles.GetMaxHealth(petInfo.petOwner, petInfo.petIndex)
|
|
|
|
element:SetMinMaxValues(0, max)
|
|
element:SetValue(cur)
|
|
|
|
element.cur = cur
|
|
element.max = max
|
|
|
|
if (element.PostUpdate) then
|
|
element:PostUpdate(unit, cur, max)
|
|
end
|
|
end
|
|
|
|
local function Path(self, event, ...)
|
|
(self.PBHealth.Override or Update)(self, event, ...)
|
|
|
|
ColorPath(self, event, ...)
|
|
end
|
|
|
|
local function ForceUpdate(element)
|
|
Path(element.__owner, "ForceUpdate", element.__owner.unit)
|
|
end
|
|
|
|
local function Enable(self, unit)
|
|
local element = self.PBHealth
|
|
if (element) then
|
|
element.__owner = self
|
|
element.ForceUpdate = ForceUpdate
|
|
|
|
self:RegisterEvent("PET_BATTLE_OPENING_START", Path, true)
|
|
self:RegisterEvent("PET_BATTLE_OPENING_DONE", Path, true)
|
|
self:RegisterEvent("PET_BATTLE_HEALTH_CHANGED", Path, true)
|
|
self:RegisterEvent("PET_BATTLE_MAX_HEALTH_CHANGED", Path, true)
|
|
|
|
if (element:IsObjectType("StatusBar") and not element:GetStatusBarTexture()) then
|
|
element:SetStatusBarTexture([[Interface\TargetingFrame\UI-StatusBar]])
|
|
end
|
|
|
|
element:Show()
|
|
|
|
return true
|
|
end
|
|
end
|
|
|
|
local function Disable(self)
|
|
local element = self.PBHealth
|
|
if (element) then
|
|
element:Hide()
|
|
|
|
element:SetScript("OnUpdate", nil)
|
|
self:UnregisterEvent("PET_BATTLE_HEALTH_CHANGED", Path)
|
|
self:UnregisterEvent("PET_BATTLE_MAX_HEALTH_CHANGED", Path)
|
|
self:UnregisterEvent("PET_BATTLE_OPENING_DONE", Path)
|
|
self:UnregisterEvent("PET_BATTLE_OPENING_START", Path)
|
|
end
|
|
end
|
|
|
|
oUF:AddElement("PBHealth", Path, Enable, Disable)
|
|
|