annotate ObjectiveTracker/XPTracker.lua @ 66:6ccacc927ef6

- paperdoll scan timing changed to PLAYER_ENTERING_WORLD and PLAYER_EQUIPMENT_CHANGED
author Nenue
date Fri, 19 Aug 2016 09:28:38 -0400
parents e837384ac363
children
rev   line source
Nenue@19 1 --- ${PACKAGE_NAME}
Nenue@19 2 -- @file-author@
Nenue@19 3 -- @project-revision@ @project-hash@
Nenue@19 4 -- @file-revision@ @file-hash@
Nenue@19 5 -- Created: 4/6/2016 4:44 AM
Nenue@19 6
Nenue@19 7 local B = select(2,...).frame
Nenue@19 8 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
Nenue@19 9 local tostring = tostring
Nenue@19 10 local UnitLevel, IsResting, UnitXP, UnitXPMax, GetXPExhaustion, IsXPUserDisabled = UnitLevel, IsResting, UnitXP, UnitXPMax, GetXPExhaustion, IsXPUserDisabled
Nenue@19 11 local Wrapper = _G.VeneerObjectiveWrapper
Nenue@19 12 local print = B.print('XPTracker')
Nenue@19 13
Nenue@19 14 mod.InitializeXPTracker = function()
Nenue@19 15 local XPBar = Wrapper.XPBar
Nenue@19 16 if UnitLevel('player') == 100 then
Nenue@19 17 XPBar:Hide()
Nenue@19 18 return
Nenue@19 19 end
Nenue@19 20
Nenue@19 21 --- xp bar
Nenue@19 22 XPBar:SetWidth(mod.Conf.Wrapper.WrapperWidth - Wrapper.CloseButton:GetWidth())
Nenue@19 23 XPBar.statusbg:SetAllPoints(XPBar)
Nenue@19 24 XPBar:RegisterEvent('DISABLE_XP_GAIN')
Nenue@19 25 XPBar:RegisterEvent('ENABLE_XP_GAIN')
Nenue@19 26 XPBar:SetScript('OnEvent', mod.UpdateXP)
Nenue@19 27
Nenue@19 28 if not IsXPUserDisabled() then
Nenue@19 29 mod.EnableXP(XPBar)
Nenue@19 30 else
Nenue@19 31 mod.DisableXP(XPBar)
Nenue@19 32 end
Nenue@19 33
Nenue@19 34 mod.UpdateXP(XPBar)
Nenue@19 35 end
Nenue@19 36
Nenue@19 37 mod.EnableXP = function(self)
Nenue@19 38 self:RegisterEvent('PLAYER_XP_UPDATE')
Nenue@19 39 self:RegisterEvent('PLAYER_LEVEL_UP')
Nenue@19 40 self:RegisterEvent('PLAYER_UPDATE_RESTING')
Nenue@19 41 self.statusbg:SetTexture(0,0,0,.25)
Nenue@19 42 self:Show()
Nenue@19 43 end
Nenue@19 44
Nenue@19 45 mod.DisableXP = function(self)
Nenue@19 46 self:UnregisterEvent('PLAYER_XP_UPDATE')
Nenue@19 47 self:UnregisterEvent('PLAYER_LEVEL_UP')
Nenue@19 48 self:UnregisterEvent('PLAYER_UPDATE_RESTING')
Nenue@19 49 self.statusbg:SetTexture(0.5,0.5,0.5,0.5)
Nenue@19 50 self:Hide()
Nenue@19 51 end
Nenue@19 52
Nenue@19 53 mod.UpdateXP = function(self, event)
Nenue@19 54 if event == 'DISABLE_XP_GAIN' then
Nenue@19 55 mod.DisableXP(self)
Nenue@19 56 elseif event == 'ENABLE_XP_GAIN' then
Nenue@19 57 mod.EnableXP(self)
Nenue@19 58 end
Nenue@19 59
Nenue@19 60 if not IsXPUserDisabled() then
Nenue@19 61
Nenue@19 62 local xp = UnitXP('player')
Nenue@19 63 local xpmax = UnitXPMax('player')
Nenue@19 64 local rest = GetXPExhaustion()
Nenue@19 65 self.foreground:SetWidth((xp/xpmax) * self:GetWidth())
Nenue@19 66 if rest then
Nenue@19 67 self.rested:ClearAllPoints()
Nenue@19 68 if xp == 0 then
Nenue@19 69 self.rested:SetPoint('TOPLEFT', self, 'TOPLEFT', 0, 0)
Nenue@19 70 else
Nenue@19 71 self.rested:SetPoint('TOPLEFT', self.fg, 'TOPRIGHT', 0, 0)
Nenue@19 72 end
Nenue@19 73
Nenue@19 74 if (xp + rest) > xpmax then
Nenue@19 75 self.rested:SetPoint('BOTTOMRIGHT', self, 'BOTTOMRIGHT', 0, 0)
Nenue@19 76 else
Nenue@19 77 self.rested:SetWidth((rest/xpmax) * self:GetWidth())
Nenue@19 78 end
Nenue@19 79 self.rested:SetPoint('BOTTOM', self, 'BOTTOM')
Nenue@19 80 self.rested:Show()
Nenue@19 81 else
Nenue@19 82 self.rested:Hide()
Nenue@19 83 end
Nenue@19 84
Nenue@19 85 if IsResting() then
Nenue@19 86 self.statusbg:SetTexture(.2,.8,.2,.5)
Nenue@19 87 else
Nenue@19 88 self.statusbg:SetTexture(0,0,0,.25)
Nenue@19 89 end
Nenue@19 90 self.xpText:SetText(xp .. '/'.. xpmax .. (rest and (' ('..tostring(rest)..')') or ''))
Nenue@19 91 end
Nenue@19 92 end