Advertisement
Guest User

ExperienceBar.lua

a guest
Jun 27th, 2014
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.96 KB | None | 0 0
  1. local Azurah = _G['Azurah'] -- grab addon table from global
  2. local LMP = LibStub('LibMediaProvider-1.0')
  3.  
  4. -- UPVALUES --
  5. local IsUnitVeteran           = IsUnitVeteran
  6. local GetUnitVeteranPoints    = GetUnitVeteranPoints
  7. local GetUnitVeteranPointsMax = GetUnitVeteranPointsMax
  8. local GetUnitXP               = GetUnitXP
  9. local GetUnitXPMax            = GetUnitXPMax
  10. local strformat               = string.format
  11.  
  12. local overlayExp
  13. local FormatExp
  14. local db
  15.  
  16. local function OnCraftStart()
  17.    if (db.displayStyle == 2) then
  18.       ZO_PlayerProgressBar:SetAlpha(0)
  19.    end
  20. end
  21.  
  22. local function OnCraftEnd()
  23.    if (db.displayStyle == 2) then
  24.       ZO_PlayerProgressBar:SetAlpha(1)
  25.    end
  26. end
  27.  
  28. local function OnExpGain(_, unit, current, max)
  29.    if (unit ~= 'player') then return end -- only care about the player
  30.  
  31.    if (IsUnitVeteran('player')) then
  32.       -- fix reported by Equardo and thebigMuh
  33.       current, max = GetUnitVeteranPoints('player'), GetUnitVeteranPointsMax('player')
  34.    end
  35.  
  36.    overlayExp:SetText(FormatExp(current, nil, max))
  37. end
  38.  
  39. function Azurah:ConfigureExperienceBarOverlay()
  40.    if (db.overlay > 1) then -- showing overlay, enable tracking
  41.       EVENT_MANAGER:RegisterForEvent(self.name .. 'Experience', EVENT_EXPERIENCE_UPDATE, OnExpGain)
  42.       EVENT_MANAGER:RegisterForEvent(self.name .. 'Experience', EVENT_VETERAN_POINTS_UPDATE, OnExpGain)
  43.    else -- no overlay being shown, disable tracking
  44.       EVENT_MANAGER:UnregisterForEvent(self.name .. 'Experience', EVENT_EXPERIENCE_UPDATE)
  45.       EVENT_MANAGER:UnregisterForEvent(self.name .. 'Experience', EVENT_VETERAN_POINTS_UPDATE)
  46.    end
  47.  
  48.    local fontStr, current, max
  49.  
  50.    if (db.overlay > 1) then
  51.       fontStr = strformat('%s|%d|%s', LMP:Fetch('font', db.fontFace), db.fontSize, db.fontOutline)
  52.  
  53.       overlayExp:SetFont(fontStr)
  54.       overlayExp:SetColor(db.fontColour.r, db.fontColour.g, db.fontColour.b, db.fontColour.a)
  55.       overlayExp:SetHidden(false)
  56.  
  57.       FormatExp = self.overlayFuncs[db.overlay + ((db.overlayFancy) and 10 or 0)]
  58.  
  59.       if (IsUnitVeteran('player')) then
  60.          current, max = GetUnitVeteranPoints('player'), GetUnitVeteranPointsMax('player')
  61.       else
  62.          current, max = GetUnitXP('player'), GetUnitXPMax('player')
  63.       end
  64.  
  65.       overlayExp:SetText(FormatExp(current, nil, max))
  66.    else -- not showing
  67.       overlayExp:SetHidden(true)
  68.    end
  69. end
  70.  
  71. function Azurah:ConfigureExperienceBarDisplay()
  72.    PLAYER_PROGRESS_BAR_FRAGMENT:SetConditional(function() return not (db.displayStyle == 3) end)
  73.    PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT:SetConditional(function() return not (db.displayStyle == 3) end)
  74.    
  75.    if db.displayStyle == 2 then
  76.       EVENT_MANAGER:RegisterForEvent(self.name .. 'Experience', EVENT_CRAFTING_STATION_INTERACT,      OnCraftStart)
  77.       EVENT_MANAGER:RegisterForEvent(self.name .. 'Experience', EVENT_END_CRAFTING_STATION_INTERACT,  OnCraftEnd)
  78.       HUD_SCENE:AddFragment(PLAYER_PROGRESS_BAR_FRAGMENT)
  79.       HUD_SCENE:AddFragment(PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT)
  80.       HUD_UI_SCENE:AddFragment(PLAYER_PROGRESS_BAR_FRAGMENT)
  81.       HUD_UI_SCENE:AddFragment(PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT)
  82.    else
  83.       EVENT_MANAGER:UnregisterForEvent(self.name .. 'Experience', EVENT_CRAFTING_STATION_INTERACT)
  84.       EVENT_MANAGER:UnregisterForEvent(self.name .. 'Experience', EVENT_END_CRAFTING_STATION_INTERACT)
  85.       HUD_SCENE:RemoveFragment(PLAYER_PROGRESS_BAR_FRAGMENT)
  86.       HUD_SCENE:RemoveFragment(PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT)
  87.       HUD_UI_SCENE:RemoveFragment(PLAYER_PROGRESS_BAR_FRAGMENT)
  88.       HUD_UI_SCENE:RemoveFragment(PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT)
  89.    end
  90. end
  91.  
  92. function Azurah:InitializeExperienceBar()
  93.    db = self.db.experienceBar
  94.  
  95.    -- create overlay
  96.    overlayExp = self:CreateOverlay(ZO_PlayerProgressBarBar, LEFT, LEFT, 5, -1, nil, nil, nil, 0)
  97.  
  98.    -- set 'dummy' display function
  99.    FormatExp = self.overlayFuncs[1]
  100.  
  101.    self:ConfigureExperienceBarOverlay()
  102.    self:ConfigureExperienceBarDisplay()
  103. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement