Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Azurah = _G['Azurah'] -- grab addon table from global
- local LMP = LibStub('LibMediaProvider-1.0')
- -- UPVALUES --
- local IsUnitVeteran = IsUnitVeteran
- local GetUnitVeteranPoints = GetUnitVeteranPoints
- local GetUnitVeteranPointsMax = GetUnitVeteranPointsMax
- local GetUnitXP = GetUnitXP
- local GetUnitXPMax = GetUnitXPMax
- local strformat = string.format
- local overlayExp
- local FormatExp
- local db
- local function OnCraftStart()
- if (db.displayStyle == 2) then
- ZO_PlayerProgressBar:SetAlpha(0)
- end
- end
- local function OnCraftEnd()
- if (db.displayStyle == 2) then
- ZO_PlayerProgressBar:SetAlpha(1)
- end
- end
- local function OnExpGain(_, unit, current, max)
- if (unit ~= 'player') then return end -- only care about the player
- if (IsUnitVeteran('player')) then
- -- fix reported by Equardo and thebigMuh
- current, max = GetUnitVeteranPoints('player'), GetUnitVeteranPointsMax('player')
- end
- overlayExp:SetText(FormatExp(current, nil, max))
- end
- function Azurah:ConfigureExperienceBarOverlay()
- if (db.overlay > 1) then -- showing overlay, enable tracking
- EVENT_MANAGER:RegisterForEvent(self.name .. 'Experience', EVENT_EXPERIENCE_UPDATE, OnExpGain)
- EVENT_MANAGER:RegisterForEvent(self.name .. 'Experience', EVENT_VETERAN_POINTS_UPDATE, OnExpGain)
- else -- no overlay being shown, disable tracking
- EVENT_MANAGER:UnregisterForEvent(self.name .. 'Experience', EVENT_EXPERIENCE_UPDATE)
- EVENT_MANAGER:UnregisterForEvent(self.name .. 'Experience', EVENT_VETERAN_POINTS_UPDATE)
- end
- local fontStr, current, max
- if (db.overlay > 1) then
- fontStr = strformat('%s|%d|%s', LMP:Fetch('font', db.fontFace), db.fontSize, db.fontOutline)
- overlayExp:SetFont(fontStr)
- overlayExp:SetColor(db.fontColour.r, db.fontColour.g, db.fontColour.b, db.fontColour.a)
- overlayExp:SetHidden(false)
- FormatExp = self.overlayFuncs[db.overlay + ((db.overlayFancy) and 10 or 0)]
- if (IsUnitVeteran('player')) then
- current, max = GetUnitVeteranPoints('player'), GetUnitVeteranPointsMax('player')
- else
- current, max = GetUnitXP('player'), GetUnitXPMax('player')
- end
- overlayExp:SetText(FormatExp(current, nil, max))
- else -- not showing
- overlayExp:SetHidden(true)
- end
- end
- function Azurah:ConfigureExperienceBarDisplay()
- PLAYER_PROGRESS_BAR_FRAGMENT:SetConditional(function() return not (db.displayStyle == 3) end)
- PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT:SetConditional(function() return not (db.displayStyle == 3) end)
- if db.displayStyle == 2 then
- EVENT_MANAGER:RegisterForEvent(self.name .. 'Experience', EVENT_CRAFTING_STATION_INTERACT, OnCraftStart)
- EVENT_MANAGER:RegisterForEvent(self.name .. 'Experience', EVENT_END_CRAFTING_STATION_INTERACT, OnCraftEnd)
- HUD_SCENE:AddFragment(PLAYER_PROGRESS_BAR_FRAGMENT)
- HUD_SCENE:AddFragment(PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT)
- HUD_UI_SCENE:AddFragment(PLAYER_PROGRESS_BAR_FRAGMENT)
- HUD_UI_SCENE:AddFragment(PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT)
- else
- EVENT_MANAGER:UnregisterForEvent(self.name .. 'Experience', EVENT_CRAFTING_STATION_INTERACT)
- EVENT_MANAGER:UnregisterForEvent(self.name .. 'Experience', EVENT_END_CRAFTING_STATION_INTERACT)
- HUD_SCENE:RemoveFragment(PLAYER_PROGRESS_BAR_FRAGMENT)
- HUD_SCENE:RemoveFragment(PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT)
- HUD_UI_SCENE:RemoveFragment(PLAYER_PROGRESS_BAR_FRAGMENT)
- HUD_UI_SCENE:RemoveFragment(PLAYER_PROGRESS_BAR_CURRENT_FRAGMENT)
- end
- end
- function Azurah:InitializeExperienceBar()
- db = self.db.experienceBar
- -- create overlay
- overlayExp = self:CreateOverlay(ZO_PlayerProgressBarBar, LEFT, LEFT, 5, -1, nil, nil, nil, 0)
- -- set 'dummy' display function
- FormatExp = self.overlayFuncs[1]
- self:ConfigureExperienceBarOverlay()
- self:ConfigureExperienceBarDisplay()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement