You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.5 KiB
45 lines
1.5 KiB
local Addon = LibStub('AceAddon-3.0'):GetAddon('WoWthing_Collector')
|
|
local Module = Addon:NewModule('Achievements')
|
|
|
|
|
|
Module.db = {}
|
|
|
|
function Module:OnEnable()
|
|
self:RegisterBucketEvent({ 'CRITERIA_UPDATE' }, 1, 'UpdateAchievements')
|
|
end
|
|
|
|
function Module:OnEnteringWorld()
|
|
self:UpdateAchievements()
|
|
end
|
|
|
|
function Module:UpdateAchievements()
|
|
Addon.charData.scanTimes['achievements'] = time()
|
|
|
|
local achievements = {}
|
|
for _, achievementId in ipairs(self.db.achievements) do
|
|
local criteria = {}
|
|
local earnedByCharacter = select(13, GetAchievementInfo(achievementId))
|
|
-- This is nil if the achievement doesn't exist somehow
|
|
if earnedByCharacter ~= nil then
|
|
if not earnedByCharacter then
|
|
local numCriteria = self.db.criteria[achievementId] or GetAchievementNumCriteria(achievementId)
|
|
for i = 1, numCriteria do
|
|
local success, _, _, _, quantity = pcall(GetAchievementCriteriaInfo, achievementId, i, true)
|
|
if success == false then
|
|
criteria = {}
|
|
break
|
|
end
|
|
table.insert(criteria, quantity)
|
|
end
|
|
end
|
|
|
|
table.insert(achievements, {
|
|
id = achievementId,
|
|
earned = earnedByCharacter,
|
|
criteria = criteria,
|
|
})
|
|
end
|
|
end
|
|
|
|
Addon.charData.achievements = achievements
|
|
end
|
|
|