Module:AchievementSystem: Difference between revisions

// via Wikitext Extension for VSCode
// via Wikitext Extension for VSCode
Line 391: Line 391:
-- @return Array of badge achievement objects
-- @return Array of badge achievement objects
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
---@class Achievement
---@field type string
---@field date string
---@field name string
---@return Achievement[]
function Achievements.getBadgeAchievements(pageId, frame)
function Achievements.getBadgeAchievements(pageId, frame)
     if not pageId or pageId == '' then
     if not pageId or pageId == '' then
Line 421: Line 416:
         local achType = achievementTbl['type']
         local achType = achievementTbl['type']
         if achType and typeDefinitions[achType] and typeDefinitions[achType]['type'] == "badge" then
         if achType and typeDefinitions[achType] and typeDefinitions[achType]['type'] == "badge" then
            ---@type Achievement
                local newAchievement = {
            local newAchievement = {
                    type = achType,
                type = achType,
                    date = achievementTbl['date'] or '',
                date = achievementTbl['date'] or '',
                    name = typeDefinitions[achType].name or achType,
                name = typeDefinitions[achType].name or achType
                    category = typeDefinitions[achType].category
            }
                }
             table.insert(badgeAchievements, newAchievement)
             table.insert(badgeAchievements, newAchievement)
         end
         end
Line 610: Line 605:
      
      
     -- Direct lookup for the requested achievement type
     -- Direct lookup for the requested achievement type
     for _, achievement in ipairs(userAchievements) do
     for _, achievementTbl in ipairs(userAchievements) do
         if achievement["type"] == achievementType then
         if achievementTbl["type"] == achievementType then
             return achievement
local def = Achievements.getAchievementDefinition(achievementType)
             return {
                type    = achievementTbl.type,
                date    = achievementTbl.date or '',
                name    = def and def.name or achievementType,
                category = def and def.category
            }
         end
         end
     end
     end