Module:HeroDataArrays: Difference between revisions

Jump to navigation Jump to search
separated reload delay table
added alt fire DPS (testing)
Line 149: Line 149:
     z = z.."|}"
     z = z.."|}"
     return z
     return z
end
p.heroAltDpsTable = function(frame)
    local heroAltDpsData = heroDataArray({"Name","Weapon>AltFire>DPS","Weapon>AltFire>ReloadTime",
        "Weapon>AltFire>ClipSize","Weapon>AltFire>RoundsPerSecond","Weapon>AltFire>BulletDamage","Weapon>AltFire>BulletsPerShot"})
 
    local rows = {}
    for name, data in pairs(heroAltDpsData) do
        table.insert(rows, {
            name = name,
            DPS = data["Weapon>AltFire>DPS"] or 0,
            reloadTime = data["Weapon>AltFire>ReloadTime"] or 0,
            clipSize = data["Weapon>AltFire>ClipSize"] or 0,
            roundsPerSecond = data["Weapon>AltFire>RoundsPerSecond"] or 0,
            bulletDamage = data["Weapon>AltFire>BulletDamage"] or 0,
            bulletsPerShot = data["Weapon>AltFire>BulletsPerShot"] or 0
        })
    end
    table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end)
    local tableDefs = {
    {
            title  = "Hero Base Alt Fire Stats",
            columns = {
                { label = "Damage per sec", field = "DPS"  },
                { label = "Reload Time (s)", field = "reloadTime"  },
                { label = "Ammo", field = "clipSize"  },
                { label = "Ammo", field = "roundsPerSecond"  },
                { label = "Bullet Damage", field = "bulletDamage"  },
                { label = "Bullets Per Shot", field = "bulletsPerShot"  },
            }
        }   
    }
    local output = ""
    for _, tableDef in ipairs(tableDefs) do
        local filteredRows = {}
        for _, r in ipairs(rows) do
            local hasValue = false
            for _, col in ipairs(tableDef.columns) do
                if r[col.field] ~= 0 then
                    hasValue = true
                    break
                end
            end
            if hasValue then
                table.insert(filteredRows, r)
            end
        end
        if #filteredRows > 0 then
            local header = ""
            for _, col in ipairs(tableDef.columns) do
                header = header.." !! "..col.label
            end
            local t = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n"..
                "|+ "..tableDef.title.." \n"..
                "! Hero"..header.." \n"
            for _, r in ipairs(filteredRows) do
                local cells = ""
                for _, col in ipairs(tableDef.columns) do
                    cells = cells.." || "..r[col.field]
                end
                t = t..
                    "|- \n"..
                    "| style=\"text-align:left;\" | "..
                        frame:expandTemplate{title="PageRef", args={r.name}}..
                        cells.." \n"
            end
            t = t.."|}"
            if output ~= "" then
                output = output.."\n\n"
            end
            output = output..t
        end
    end
    return output
end
end