A World of Warcraft Experience Bar addon
worldofwarcraft wow addon midnight
at main 64 lines 2.0 kB view raw
1local _, F = ... 2 3-- 1. Event Handling (Replaces Trigger 2) 4F.Events:RegisterEvent("PLAYER_ENTERING_WORLD") 5F.Events:RegisterEvent("PLAYER_LEVEL_UP") 6F.Events:RegisterEvent("PLAYER_XP_UPDATE") 7F.Events:RegisterEvent("UPDATE_FACTION") 8F.Events:RegisterEvent("QUEST_LOG_UPDATE") 9F.Events:RegisterEvent("QUEST_WATCH_LIST_CHANGED") 10F.Events:RegisterEvent("QUEST_WATCH_UPDATE") 11F.Events:RegisterEvent("ADDON_LOADED") 12 13F.Events:SetScript("OnEvent", function(self, event, ...) 14 local arg1 = ... 15 16 if event == "ADDON_LOADED" and arg1 == "NixxnuxXPBar" then 17 F.InitDB() 18 F.State.session.startTime = time() 19 F.State.session.lastXP = UnitXP("player") 20 -- Hide Blizzard XP / Reputation bars if configured 21 if F.UI and F.UI.HideBlizzardBars then 22 F.UI.HideBlizzardBars() 23 end 24 end 25 26 if event == "PLAYER_ENTERING_WORLD" then 27 F.State:UpdatePlayerXP() 28 F.State:UpdateQuestXP() 29 -- Hide Blizzard bars after entering world (in case something re-enabled them) 30 if F.UI and F.UI.HideBlizzardBars then 31 F.UI.HideBlizzardBars() 32 end 33 34 elseif event == "PLAYER_XP_UPDATE" then 35 local currentXP = UnitXP("player") 36 local gained = currentXP - F.State.session.lastXP 37 38 -- Handle wrap around level up 39 if gained < 0 then 40 gained = F.State.maxXP - F.State.session.lastXP + currentXP 41 end 42 43 F.State.session.gainedXP = F.State.session.gainedXP + gained 44 F.State.session.lastXP = currentXP 45 F.State:UpdatePlayerXP() 46 47 elseif event == "QUEST_LOG_UPDATE" or event == "QUEST_WATCH_LIST_CHANGED" or event == "QUEST_WATCH_UPDATE" then 48 F.State:UpdateQuestXP() 49 end 50 51 -- Force a UI Update immediately on event 52 F.UpdateUI() 53end) 54 55-- ticker that updates the UI each second 56C_Timer.NewTicker(1, function() 57 F.UpdateUI() 58end) 59 60function F.UpdateUI() 61 if F.UI and F.UI.Update then 62 F.UI.Update() 63 end 64end