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.

115 lines
2.5 KiB

local PA = _G.ProjectAzilroka
local oUF = PA.oUF
if not oUF then
return
end
local function UpdateColor(self, event, unit)
if (not unit or self.unit ~= unit) then
return
end
local element = self.PBExperience
local r, g, b, t
if (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.colorExperience) then
t = self.colors.power.MANA
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.PBExperience.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.PBExperience
if (element.PreUpdate) then
element:PreUpdate(unit)
end
local cur, max = C_PetBattles.GetXP(petInfo.petOwner, petInfo.petIndex)
local level = C_PetBattles.GetLevel(petInfo.petOwner, petInfo.petIndex)
if level == 25 then
max = 1
cur = 1
end
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, ...)
if (self.isForced and event ~= "ElvUI_UpdateAllElements") then
return
end
(self.PBExperience.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.PBExperience
if (element) then
element.__owner = self
element.ForceUpdate = ForceUpdate
self:RegisterEvent("PET_BATTLE_XP_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.PBExperience
if (element) then
element:Hide()
element:SetScript("OnUpdate", nil)
self:UnregisterEvent("PET_BATTLE_XP_CHANGED", Path)
end
end
oUF:AddElement("PBExperience", Path, Enable, Disable)