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)