WARFRAME Wiki
Register
Advertisement
WARFRAME Wiki

Documentation for this module may be created at Module:FINNER Icon Test/doc

--WARFRAME Wiki Icon Module
--https://warframe.fandom.com/wiki/Template:Icon

local p = {}

local IconData = mw.loadData( 'Module:Icon/data' )


function p.Item(frame)
    local iconname = frame.args[1]
    local textexist = frame.args[2]
    local imagesize = frame.args.imgsize

    return p._Item(iconname, textexist, imagesize)
end

--Extracting out to this function allows other Modules to call item text
--Since any templates output by another module won't be parsed by the wiki
function p._Item(iconname, textexist, imagesize)
    iconname = string.gsub(" "..string.lower( iconname ), "%W%l", string.upper):sub(2)
    local link = ''
    local title = ''
    if IconData["Items"][iconname] == nil then
        return "<span style=\"color:red;\">Invalid</span>[[Category:Icon Module error]]"
    else
        link = IconData["Items"][iconname]["link"]
        title = IconData["Items"][iconname]["title"]
        iconname = IconData["Items"][iconname]["icon"]
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x26'
        end

        local imgText = '[[File:'..iconname..'|'..imagesize..'px'
        if(link ~= nil) then
            imgText = imgText..'|link='..link
        end
        if(title ~= nil) then
            imgText = imgText..'|'..title
        end
        imgText = imgText..']]'

        if (textexist == 'text' or textexist == 'Text') then
            if (link ~= nil) then
                if (title ~= nil) then
                    return imgText..' [['..link..'|'..title..']]'
                else
                    return imgText..' [['..link..']]'
                end
            elseif (title ~= nil) then
                return imgText..' '..title
            else
                return imgText
            end
        end
        return imgText
    end
end

function p.Pol(frame)
    local iconname = frame.args[1]
    local color = frame.args[2]
    local imagesize = frame.args.imgsize
    return p._Pol(iconname, color, imagesize)
end

function p._Pol(iconname, color, imagesize)
    if IconData["Polarities"][iconname] == nil then
        return "<span style=\"color:red;\">Invalid</span>"
    else
        if (color == 'white' or color == 'White') then
            iconname = IconData["Polarities"][iconname]["icon"][2] --white icon
        else
            iconname = IconData["Polarities"][iconname]["icon"][1] --black icon
        end
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x20'
        end
        if iconname == "O" or iconname == "o" then
            return '[[File:'..iconname..'|'..imagesize..'px|link=Polarity]][[Category:IconORename]]'
        end
        return '[[File:'..iconname..'|'..imagesize..'px|link=Polarity]]'
    end
end

function p.Dis( frame )
    local name = frame.args[1]
    local color = frame.args[2]
    local size = frame.args.imgsize
    return p._Dis(name, color, size)
end

function p._Dis(name, color, size)
    local link = 'Riven_Mods#Disposition'
    if(color == nil or color == '') then color = 'black' end
    if(size  == nil or size  == '') then size  = 27      end
    if name  == nil then
        return "<span style=\"color:red;\">Invalid</span>"
    else
        local dots = ''
        name = tonumber(name)
        if    (name < 0.7) then dots = '●○○○○'
        elseif(name < 0.9) then dots = '●●○○○'
        elseif(name <= 1.1) then dots = '●●●○○'
        elseif(name <= 1.3) then dots = '●●●●○'
        else                     dots = '●●●●●' end
        return '[['..link..'|<span style="font-size:'..size..'px; color:'..color..'; display:inline; position:relative; top:2px">'..dots..'</span>]]'
    end
end

function p.Affinity( frame )
    local iconname = frame.args[1]
    local textexist = frame.args[2]
    local imagesize = frame.args.imgsize
    return p._Affinity(iconname, textexist, imagesize)
end

function p._Affinity(iconname, textexist, imagesize)
    local link = ''
    if IconData["Affinity"][iconname] == nil then
        return "<span style=\"color:red;\">Invalid</span>"
    else
        link = IconData["Affinity"][iconname]["link"]
        local imgname = IconData["Affinity"][iconname]["icon"]
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x26'
        end
        if (textexist == 'text' or textexist == 'Text') then
            return '[[File:'..imgname..'|'..imagesize..'px|link='..link..']] [['..link..'|'..iconname..']]'
        end
        return '[[File:'..imgname..'|'..imagesize..'px|link='..link..']]'
    end
end

function p.Faction( frame )
        local iconname = frame.args[1]
        local textexist = frame.args[2]
        local color = frame.args[3]
        local imagesize = frame.args.imgsize
        local link = ''
        if IconData["Factions"][iconname] == nil then
              return '[['..iconname..']]'
        else
           link = IconData["Factions"][iconname]["link"]
           if (color == 'white' or color == 'White') then
              iconname = IconData["Factions"][iconname]["icon"][2]   --white icon
           else
          iconname = IconData["Factions"][iconname]["icon"][1]   --black icon
       end
           if (imagesize == nil or imagesize == '') then
              imagesize = 'x20'
           end
       if (textexist == 'text' or textexist == 'Text') then
              return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']][['..link..']]'
           end
       return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']]'
        end
end

function p.Syndicate( frame )
    local iconname = frame.args[1]
    local textexist = frame.args[2]
    local color = frame.args[3]
    local imagesize = frame.args.imgsize

    local link = ''

    if IconData["Syndicates"][iconname] == nil then
        return ""
    end

    link = IconData["Syndicates"][iconname]["link"]
    if (color == 'white' or color == 'White') then
        iconname = IconData["Syndicates"][iconname]["icon"][2]   --white icon
    else
        iconname = IconData["Syndicates"][iconname]["icon"][1]   --black icon
    end

    if (imagesize == nil or imagesize == '') then
        imagesize = 'x32'
    end

    if (textexist == 'text' or textexist == 'Text') then
        return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']][['..link..']]'
    else
        return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']]'
    end
end

function p.Prime(frame)
    local primename = frame.args[1]
    local partname = frame.args[2]
    local imagesize = frame.args.imgsize
    return p._Prime(primename, partname, imagesize)
end

function p._Prime(primename, partname, imagesize)
    local primename = string.gsub(" "..string.lower( primename ), "%W%l", string.upper):sub(2)

    local link = ''
    local iconname = ''
    if IconData["Primes"][primename] == nil then
        return '<span style="color:red">Icon not found</span>[[Category:Missing icon]]'
    end

    link = IconData["Primes"][primename]["link"]
    iconname = IconData["Primes"][primename]["icon"]
    if (imagesize == nil or imagesize == '') then
        imagesize = '32'
    end

    if partname ~= nil then
        partname = string.gsub(" "..string.lower( partname ), "%W%l", string.upper):sub(2)

        local result = ''
        if primename == "Forma" then
            result =  '[[File:'..iconname..'|x'..imagesize..'px|link='..link..']]'
            result = result..' [['..link..'#Acquisition|'..primename.." "..partname..']]'
        else
            result = '[[File:'..iconname..'|x'..imagesize..'px|link='..link..']]'
            result = result..' [['..link..'#Acquisition|'..primename..' Prime '..partname..']]'
        end
        return result
    end

    return '[[File:'..iconname..'|x'..imagesize..'px|link='..link..']]'
end

function p.Resource( frame )
    local iconname = frame.args[1]
    local textexist = frame.args[2]
    local imagesize = frame.args.imgsize

    return p._Resource(iconname, textexist, imagesize)
end

function p._Resource(iconname, textexist, imagesize)
    local link = ''
    if IconData["Resources"][iconname] == nil then
        if (textexist == 'text' or textexist == 'Text') then
            return '[['.. iconname ..']]'
        end
        -- TODO: A placeholder icon and do this for all the item types
        return ""
    else
        link = IconData["Resources"][iconname]["link"]
        iconname = IconData["Resources"][iconname]["icon"]
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x20'
        end
        if (textexist == 'text' or textexist == 'Text') then
            return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']] [['..link..']]'
        end
        return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']]'
    end
end

function p.Fish( frame )
    local iconname = frame.args[1]
    local textexist = frame.args[2]
    local imagesize = frame.args.imgsize

    return p._Fish(iconname, textexist, imagesize)
end

function p._Fish(iconname, textexist, imagesize)
    local link = ''
    local title  = ''
    if IconData["Fish"][iconname] == nil then
        return ""
    else
        link = IconData["Fish"][iconname]["link"]
        iconname = IconData["Fish"][iconname]["icon"]
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x32'
        end
        if (textexist == 'text' or textexist == 'Text') then
            return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']] [['..link..'|'..title..']]'
        end
        return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']]'
    end
end

function p.Proc( frame )
    local iconname = frame.args[1]
    local textexist = frame.args[2]
    local color = frame.args[3]
    local ignoreColor = frame.args.ignoreColor
    if(ignoreColor ~= nil and string.upper(ignoreColor) ~= "NO" and string.upper(ignoreColor) ~= "FALSE") then
        ignoreColor = true
    else
        ignoreColor = false
    end
    return p._Proc(iconname, textexist, color, ignoreColor)
end

function p._Proc(iconname, textexist, color, ignoreTextColor,noTooltip)
    local link = ''
    local iconFile = ""
    local textcolor = ''
    local span1 = ''
    local span2 = ''

    if noTooltip == nil then noTooltip = false end

    if (string.upper(iconname) == "UNKNOWN") then
        return ""
    elseif IconData["Procs"][iconname] == nil then
        return "<span style=\"color:red;\">Invalid</span>"
    else
        local spanTable = p.tooltipSpan(iconname, "Proc")
        if spanTable and (noTooltip == false) then
            span1 = spanTable[1]
            span2 = spanTable[2]
        end
        local tooltip = IconData["Procs"][iconname]["title"]
        link = IconData["Procs"][iconname]["link"]
        if (color == 'white' or color == 'White') then
            iconFile = IconData["Procs"][iconname]["icon"][2]   --white icon
        else
            iconFile = IconData["Procs"][iconname]["icon"][1]   --black icon
        end

        if (textexist == 'text' or textexist == 'Text') then
            if (color == 'white' or color == 'White') then
                textcolor = '#FFFFFF; text-decoration: underline'
            elseif (IconData["Procs"][iconname]["color"] ~= nil) then
                textcolor = IconData["Procs"][iconname]["color"]
            end

            if(ignoreTextColor == nil or not ignoreTextColor) then
                if(tooltip ~= nil and tooltip ~= '') then
                    return span1..'[[File:'..iconFile..'|link='..link..'|'..tooltip..']] [['..link..'|<span style=\"color:'..textcolor..';\">'..iconname..'</span>]]'..span2
                else
                    return span1..'[[File:'..iconFile..'|link='..link..']] [['..link..'|<span style=\"color:'..textcolor..';\">'..iconname..'</span>]]'..span2
                end
            else
                if(tooltip ~= nil and tooltip ~= '') then
                    return span1..'[[File:'..iconFile..'|link='..link..'|'..tooltip..']] [['..link..'|'..iconname..']]'..span2
                else
                    return span1..'[[File:'..iconFile..'|link='..link..']] [['..link..'|'..iconname..']]'..span2
                end
            end
        end
        if(tooltip ~= nil and tooltip ~= '') then
            return span1..'[[File:'..iconFile..'|link='..link..'|'..tooltip..'|alt='..iconname..']]'..span2
        else
            return span1..'[[File:'..iconFile..'|link='..link..']]'..span2
        end
    end
end

function p.Focus( frame )
    local iconname = frame.args[1]
    local textexist = frame.args[2]
    local color = frame.args[3]
    local icontype = frame.args[4]
    local imagesize = frame.args.imgsize
    if IconData["Focus"][iconname] == nil then
        return "<span style=\"color:red;\">Invalid</span>"
    else
        if icontype == 'seal' then
            if (color == 'white' or color == 'White') then
                iconname = IconData["Focus"][iconname]["seal"][2]
            else
                iconname = IconData["Focus"][iconname]["seal"][1]
            end
        else
            if (color == 'white' or color == 'White') then
                iconname = IconData["Focus"][iconname]["icon"][2]
            else
                iconname = IconData["Focus"][iconname]["icon"][1]
            end
        end
            if (imagesize == nil or imagesize == '') then
              imagesize = 'x20'
           end
           if (textexist == 'text' or textexist == 'Text') then
              return '[[File:'..iconname..'|'..imagesize..'px|sub|link=Focus]][[Focus|'..frame.args[1]..']]'
          end
          return '[[File:'..iconname..'|'..imagesize..'px|link=Focus]]'
      end
end

function p.Way( frame )
        local iconname = frame.args[1]
        local imagesize = frame.args.imgsize
        local link = ''
        if IconData["Ways"][iconname] == nil then
              return "<span style=\"color:red;\">Missing<br>Icon</span>"
        else
            iconname = IconData["Ways"][iconname]
        end
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x18'
        end
        return '[[File:'..iconname..'|'..imagesize..'px|link='..link..']]'
end


function p.HUD( frame )
        local iconname = frame.args[1]
        local textexist = frame.args[2]
        local color = frame.args[3]
        local imagesize = frame.args.imgsize
        local link = ''
        if IconData["Heads-Up Display"][iconname] == nil then
              return '[['..iconname..']]'
        else
           link = IconData["Heads-Up Display"][iconname]["link"]
           if (color == 'white' or color == 'White') then
              iconname = IconData["Heads-Up Display"][iconname]["icon"][2]   --white icon
           else
          iconname = IconData["Heads-Up Display"][iconname]["icon"][1]   --black icon
       end
           if (imagesize == nil or imagesize == '') then
              imagesize = 'x20'
           end
       if (textexist == 'text' or textexist == 'Text') then
              return '[[File:'..iconname..'|'..imagesize..'px|link=Heads-Up Display]][[Heads-Up Display|'..link..']]'
           end
       return '[[File:'..iconname..'|'..imagesize..'px|link=Heads-Up Display]]'
        end
end

function p.Flag( frame )
    local iconname = frame.args[1]
    local tooltip = frame.args[2]
    local dest = frame.args[3]
    local textexist = frame.args[4]
    if IconData["Flags"][iconname] == nil then
        return "<span style=\"color:red;\">Invalid</span>"
    else
        iconname = IconData["Flags"][iconname]
        if tooltip == nil then
            tooltip = ''
        end
        if dest == nil then
            dest = ''
        end
        if (textexist == 'text' or textexist == 'Text') then
            return '[[File:'..iconname..'|'..tooltip..'|16px|link='..dest..']] [['..dest..'|'..tooltip..']]'
        end
        return '[[File:'..iconname..'|'..tooltip..'|16px|link='..dest..']]'
    end
end

function p.Melee(frame)
    local AttackType = frame.args[1]
    local ProcType = frame.args[2]
    local imagesize = frame.args.imgsize
    return p._Melee(AttackType, ProcType, imagesize)
end

function p._Melee(AttackType, ProcType, imagesize)
    if(AttackType == nil or AttackType == '') then
        AttackType = "DEFAULT"
    else
        AttackType = string.upper(AttackType)
    end
    if(ProcType == nil or ProcType == '') then
        ProcType = "DEFAULT"
    else
        ProcType = string.upper(ProcType)
    end
    if (imagesize == nil or imagesize == '') then
        imagesize = 'x22'
    end


    if(IconData["Melee"][ProcType] == nil or IconData["Melee"][ProcType][AttackType] == nil) then
        return "<span style=\"color:red;\">Invalid</span>"
    end

    local icon = IconData["Melee"][ProcType][AttackType].icon
    local link = IconData["Melee"][ProcType][AttackType].link
    local title = IconData["Melee"][ProcType][AttackType].title
    local tooltip = IconData["Melee"][ProcType][AttackType].tooltip
    if(icon == nil or icon == '') then
        return "<span style=\"color:red;\">Invalid</span>"
    end

    local result = '[[File:'..icon
    if(tooltip ~= nil and tooltip ~= '') then result = result..'|'..tooltip end
    result = result..'|'..imagesize..'px'
    if link ~= nil then result = result..'|link='..link end
    if title ~= nil then result = result..'|'..title end
    result = result..']]'
    return result
end

function p.Zaw(frame)
    local zawname_input = frame.args[1]
    local textexist = frame.args[2]
    local imagesize_input = frame.args.imgsize
    return p._Zaw(zawname_input, textexist, imagesize_input)
end

function p._Zaw(zawname, textexist, imagesize)
    zawname = string.gsub(" "..string.lower( zawname ), "%W%l", string.upper):sub(2)
    local link = ''
    if IconData["Zaws"][zawname] == nil then
        return "<span style=\"color:red;\">Invalid</span>[[Category:Icon Module error]]"
    else
        link = IconData["Zaws"][zawname]["link"]
        local title = IconData["Zaws"][zawname]["title"]
        zawname = IconData["Zaws"][zawname]["icon"]
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x26'
        end

        local imgText = '[[File:'..zawname..'|'..imagesize..'px'
        if(link ~= nil) then
            imgText = imgText..'|link='..link
        elseif(title ~= nil) then
            imgText = imgText..'|'..title
        end
        imgText = imgText..']]'

        if (textexist == 'text' or textexist == 'Text') then
            if (link ~= nil) then
                if(title ~= nil) then
                    return imgText..' [['..link..'|'..title..']]'
                else
                    return imgText..' [['..link..']]'
                end
            elseif(title ~= nil) then
                return imgText..' '..title
            else
                return imgText
            end
        end
        return imgText
    end
end

function p.Buff(frame)
    local iconname = frame.args[1]
    local color = frame.args[2]
    local imagesize = frame.args.imgsize
    local link = IconData["Buff"][iconname]["link"]
    local iconFile = ""

    if IconData["Buff"][iconname] == nil then
        return "<span style=\"color:red;\">Invalid</span>"
    else
        if (color == 'white' or color == 'White') then
            iconFile = IconData["Buff"][iconname]["icon"][1]   --white icon
        else
            iconFile = IconData["Buff"][iconname]["icon"][2]   --black icon
        end
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x40'
        end
        return '[[File:'..iconFile..'|'..imagesize..'px|link='..link..']]'
    end
end

function p.Clan(frame)
    local iconname = frame.args[1]
    local imagesize = frame.args.imgsize

    return p._Clan(iconname, imagesize)
end

function p._Clan(iconname, imagesize)
    local link = IconData["Clan"][iconname]["link"]
    local iconFile = ""

    if IconData["Clan"][iconname] == nil then
        return "<span style=\"color:red;\">Invalid</span>"
    else
        iconFile = IconData["Clan"][iconname]["icon"]
        if (imagesize == nil or imagesize == '') then
            imagesize = 'x26'
        end
        return '[[File:'..iconFile..'|'..imagesize..'px|link='..link..'|'..iconname..' Clan]]'
    end
end

local function tooltipCheck(name, typename)
    local procList = {"Impact","Puncture","Slash","Cold","Electricity","Heat","Toxin","Void","Tau","Blast","Corrosive","Gas","Magnetic","Radiation","Viral","True","Ballistic","Plasma","Particle","Frost","Ionic","Incendiary",{"Chem","Chemical"}}
    if typename == "Proc" then
        for i, Name in pairs(procList) do
            if type(Name) == 'table' then
                if Name[1] == name or Name[2] == name then
                    name = Name[1]
                    return name
                end
            elseif type(Name) == 'string' then
                if Name == name then
                    return name
                end
            end
        end
    end

    return nil
end

function p.tooltipSpan(name, typename)
    local iconName = tooltipCheck(name, typename)
    local span = {}
    if iconName and typename == 'Proc' then
        span[1] = '<span class="damagetype-tooltip" data-param="'..iconName..'" style="white-space:nowrap;">'
        span[2] = '</span>'
        return span
    end
    return nil
end

function p.Test2(par1, par2)
    local spans = p.tooltipSpan(par1, par2)
    return spans[1]..spans[2]
end

function p.Test(frame)
    return p._Proc(frame.args[1])
end

return p
Advertisement