From f09a426225a382acdc125da68a5128bad5613a5c Mon Sep 17 00:00:00 2001 From: p3lim Date: Tue, 7 Sep 2010 03:13:09 +0200 Subject: [PATCH] Back to basics --- oUF_Experience.lua | 82 ++++++++++++++++++++-------------------------------- 1 file changed, 32 insertions(+), 50 deletions(-) diff --git a/oUF_Experience.lua b/oUF_Experience.lua index 6e4d476..d347223 100644 --- a/oUF_Experience.lua +++ b/oUF_Experience.lua @@ -2,55 +2,45 @@ local _, ns = ... local oUF = ns.oUF or oUF assert(oUF, 'oUF Experience was unable to locate oUF install') -local function GetXP(unit) - if(unit == 'pet') then - return GetPetExperience() - else - return UnitXP(unit), UnitXPMax(unit) - end -end - -local function Update(self, event, owner) - if(event == 'UNIT_PET' and owner ~= 'player') then return end - - local experience = self.Experience - -- Conditional hiding - if(self.unit == 'player') then - if(UnitLevel('player') == MAX_PLAYER_LEVEL) then - return experience:Hide() +local function Unbeneficial(self, unit) + if(unit == 'player') then + if(UnitLevel(unit) == MAX_PLAYER_LEVEL) then + return true end - elseif(self.unit == 'pet') then + elseif(unit == 'pet') then local _, hunterPet = HasPetUI() if(not self.disallowVehicleSwap and UnitHasVehicleUI('player')) then - return experience:Hide() - elseif(not hunterPet or (UnitLevel('pet') == UnitLevel('player'))) then - return experience:Hide() + return true + elseif(not hunterPet or (UnitLevel(unit) == UnitLevel('player'))) then + return true end + end +end + +local function Update(self, event, unit) + if(self.unit ~= unit) then return end + local experience = self.Experience + + if(Unbeneficial(self, unit)) then + experience:Hide() else - return experience:Hide() + experience:Show() + end + + local min, max + if(unit == 'pet') then + min, max = GetPetExperience() + else + min, max = UnitXP(unit), UnitXPMax(unit) end - local unit = self.unit - local min, max = GetXP(unit) experience:SetMinMaxValues(0, max) experience:SetValue(min) - experience:Show() - - if(experience.Text) then - experience.Text:SetFormattedText('%d / %d', min, max) - end if(experience.Rested) then - local rested = GetXPExhaustion() - if(unit == 'player' and rested and rested > 0) then - experience.Rested:SetMinMaxValues(0, max) - experience.Rested:SetValue(math.min(min + rested, max)) - experience.rested = rested - else - experience.Rested:SetMinMaxValues(0, 1) - experience.Rested:SetValue(0) - experience.rested = nil - end + local exhaustion = unit == 'player' and GetXPExhaustion() or 0 + experience.Rested:SetMinMaxValues(0, max) + experience.Rested:SetValue(math.min(min + exhaustion, max)) end if(experience.PostUpdate) then @@ -66,7 +56,7 @@ local function ForceUpdate(element) return Path(element.__owner, 'ForceUpdate', element.__parent.unit) end -local function Enable(self, unit) +local function Enable(self) local experience = self.Experience if(experience) then experience.__parent = self @@ -74,15 +64,11 @@ local function Enable(self, unit) self:RegisterEvent('PLAYER_XP_UPDATE', Path) self:RegisterEvent('PLAYER_LEVEL_UP', Path) - self:RegisterEvent('UNIT_PET', Path) + self:RegisterEvent('UNIT_PET_EXPERIENCE', Path) if(experience.Rested) then self:RegisterEvent('UPDATE_EXHAUSTION', Path) - experience.Rested:SetFrameLevel(1) - end - - if(select(2, UnitClass('player')) == 'HUNTER') then - self:RegisterEvent('UNIT_PET_EXPERIENCE', Path) + experience.Rested:SetFrameLevel(experience:GetFrameLevel() - 1) end if(not experience:GetStatusBarTexture()) then @@ -98,15 +84,11 @@ local function Disable(self) if(experience) then self:UnregisterEvent('PLAYER_XP_UPDATE', Path) self:UnregisterEvent('PLAYER_LEVEL_UP', Path) - self:UnregisterEvent('UNIT_PET', Path) + self:UnregisterEvent('UNIT_PET_EXPERIENCE', Path) if(experience.Rested) then self:UnregisterEvent('UPDATE_EXHAUSTION', Path) end - - if(select(2, UnitClass('player')) == 'HUNTER') then - self:UnregisterEvent('UNIT_PET_EXPERIENCE', Path) - end end end -- 1.7.9.5