Mudanças entre as edições de "Módulo:Gb"

De Wiki Gla
Ir para navegação Ir para pesquisar
Etiqueta: Revertido
Linha 4: Linha 4:


function p.bossInfo(frame)
function p.bossInfo(frame)
     local args = frame:getParent().args
     local parent = frame:getParent()
    local args = parent.args


     local function g(k, default)
     local function g(k, default)
Linha 10: Linha 11:
     end
     end


     local img       = g("img",       "Placeholder.png")
     local img       = g("img",         "Placeholder.png")
     local nome       = g("nome",       "Nome do Boss")
     local nome     = g("nome",       "Nome do Boss")
     local frase     = g("frase",     "Frase ou lema do boss.")
     local frase     = g("frase",       "Frase ou lema do boss.")
     local hp         = g("hp",         "???")
     local hp       = g("hp",         "???")
     local exp       = g("exp",       "???")
     local exp       = g("exp",         "???")
     local nivel     = g("nivel",     "???")
     local nivel     = g("nivel",       "???")
     local fresco     = g("fresco",     "-")
     local fresco   = g("fresco",     "--")
     local forte     = g("forte",     "-")
     local forte     = g("forte",       "--")
     local reflete   = g("reflete",   "-")
     local reflete   = g("reflete",     "--")
     local comum     = g("comum",     "")
     local comum     = g("comum",       "--")
     local semiraro  = g("semiraro",   "")
     local semicaro  = g("semicaro",   "--")
     local raro       = g("raro",       "")
     local raro     = g("raro",       "--")
     local muitoRaro = g("muitoraro", "")
     local muitoRaro = g("muitoraro",   "--")


     ----------------------------------------------------
     ----------------------------------------------------------
     -- CSS responsivo embutido
     -- CSS correto usando addHeadItem
     ----------------------------------------------------
     ----------------------------------------------------------
     local css = [[
     local css = [[
<style>
        <style>
@media screen and (max-width: 650px) {
        @media screen and (max-width: 650px) {
  .boss-main {
            .boss-main {
    flex-direction: column !important;
                display: flex;
    text-align: center;
                flex-direction: column !important;
    gap: 16px;
                text-align: center;
  }
                gap: 16px;
 
            }
  .boss-img-box img {
            .boss-img-box img {
    width: 70px !important;
                width: 70px !important;
    height: 70px !important;
                height: 70px !important;
  }
            }
 
            .boss-stats {
  .boss-stats {
                align-items: center !important;
    align-items: center !important;
             }
  }
}
</style>
]]
 
parent:getOutput():addHeadItem(css)
 
    local html = mw.html.create()
 
    html:wikitext(css)
 
    local box = html:tag("div")
    :addClass("boss-container")
    :css{
        background = "#18181b",
        ["border-radius"] = "12px",
        padding = "30px",
        color = "#fff",
        width = "100%",
        margin = "auto",
        ["font-family"] = "Verdana,sans-serif",
        ["box-sizing"] = "border-box"
    }
 
    ----------------------------------------------------
    -- Cabeçalho
    ----------------------------------------------------
    box:tag("div")
        :css{ ["font-size"] = "1.5em", ["font-weight"] = "bold", ["margin-bottom"] = "10px" }
        :wikitext("Bosses")
 
    local var = box:tag("div")
        :css("margin-bottom", "24px")
 
    var:tag("span")
        :css{
            ["background-color"] = "#232329",
            ["border-radius"] = "7px 0 0 7px",
            padding = "7px 20px",
            ["font-size"] = "1em",
            color = "#cbcdd7",
             ["font-weight"] = "600"
        }
        :wikitext("Mecanica Elite")
 
    var:tag("span")
        :css{
            ["background-color"] = "#19171c",
            ["border-radius"] = "0 7px 7px 0",
            padding = "7px 20px",
            ["font-size"] = "1em",
            color = "#fff",
            ["font-weight"] = "600",
            border = "2px solid #c7a047",
            ["border-left"] = "0"
        }
        :wikitext("Mecanica Hard")
 
    ----------------------------------------------------
    -- Corpo principal (responsivo)
    ----------------------------------------------------
    local main = box:tag("div")
        :addClass("boss-main")
        :css{
            display = "flex",
            gap = "20px",
            ["align-items"] = "center",
            ["justify-content"] = "space-between",
            ["flex-wrap"] = "wrap"
         }
         }
        </style>
    ]]


     main:tag("div")
     parent:getOutput():addHeadItem(css)
        :addClass("boss-img-box")
        :css{ ["flex"] = "none" }
        :wikitext(string.format("[[Arquivo:%s|90px]]", img))
 
    local textBox = main:tag("div")
        :css{ ["flex"] = "1", ["min-width"] = "200px" }
 
    textBox:tag("div")
        :css{ ["font-size"] = "1.2em", ["font-weight"] = "bold", color = "#e82b2b" }
        :wikitext(nome)
 
    textBox:tag("div")
        :css{ ["font-size"] = "95%", color = "#eaa85d", ["font-style"] = "italic" }
        :wikitext(string.format('"%s"', frase))


     ----------------------------------------------------
     ----------------------------------------------------------
     -- Stats
     -- HTML de retorno
     ----------------------------------------------------
     ----------------------------------------------------------
     local stats = main:tag("div")
     local html = mw.html.create("div"):addClass("boss-main")
        :addClass("boss-stats")
        :css{
            display = "flex",
            ["flex-direction"] = "column",
            ["align-items"] = "flex-end",
            gap = "6px",
            ["min-width"] = "160px"
        }


     local statBox = stats:tag("div")
     local imgBox = html:tag("div"):addClass("boss-img-box")
        :css{
    imgBox:tag("img")
            ["background-color"] = "#222126",
        :attr("src", img)
            ["border-radius"] = "8px",
        :attr("alt", nome)
            padding = "12px 20px",
            ["min-width"] = "170px"
        }


     local sline = statBox:tag("div")
     local stats = html:tag("div"):addClass("boss-stats")
        :css{
            display = "flex",
            ["align-items"] = "center",
            ["justify-content"] = "center",
            gap = "16px",
            ["flex-wrap"] = "wrap"
        }


     sline:wikitext(string.format('<span style="color:#fb3d3d;font-weight:bold;font-size:1.15em;">&#x2764;&#xFE0F; %s</span>', hp))
     stats:wikitext(string.format([[
     sline:wikitext(string.format('<span style="color:#ffe568;font-weight:bold;font-size:1.08em;">&#x1F4B0; %s</span>', exp))
     ! **%s** 
     sline:wikitext(string.format('<span style="color:#6ca8fb;font-weight:bold;font-size:1.04em;">&#x2694;&#xFE0F; %s</span>', nivel))
     *%s*


     stats:tag("div")
     • **HP:** %
        :css{
    • **Experiência:** %s
            ["margin-top"] = "5px",
     • **Nível:** %
            ["font-size"] = "90%",
            color = "#cfccff",
            ["text-align"] = "right"
        }
        :wikitext(string.format(
            "<b>Frescor:</b> %s &nbsp;&nbsp; <b>Forte:</b> %s &nbsp;&nbsp; <b>Reflete:</b> %s",
            fresco, forte, reflete
        ))
 
    ----------------------------------------------------
    -- Tabela de loot
    ----------------------------------------------------
     local loot = box:tag("div")
        :css{
            ["margin-top"] = "28px",
            background = "#232329",
            ["border-radius"] = "10px",
            padding = "18px"
        }
 
    local tableEl = loot:tag("table")
        :css{
            width = "100%",
            color = "#fff",
            ["table-layout"] = "auto"
        }
 
    local function row(label, color, content)
        local tr = tableEl:tag("tr")
        tr:tag("th")
            :css{
                ["text-align"] = "left",
                color = color,
                padding = "6px",
                ["font-size"] = "1.07em"
            }
            :wikitext(label)
        tr:tag("td"):wikitext(content)
    end


     row("Comum:",      "#f3e8bb", comum)
     **Drops:** 
     row("Semi-Raro:", "#aeccff", semiraro)
    • Fresco: %s 
     row("Raro:",      "#e6e5ff", raro)
    • Forte: %s 
     row("Muito Raro:", "#f9538f", muitoRaro)
    • Reflete: %s 
    • Comum: %s 
     • Semicaro: %s  
     Raro: %s 
     Muito raro: %s 
    ]],
        nome, frase, hp, exp, nivel,
        fresco, forte, reflete, comum, semicaro, raro, muitoRaro
    ))


     return tostring(html)
     return tostring(html)

Edição das 04h07min de 24 de novembro de 2025

A documentação para este módulo pode ser criada em Módulo:Gb/doc

-- Módulo:BossDisplay (responsivo)

local p = {}

function p.bossInfo(frame)
    local parent = frame:getParent()
    local args = parent.args

    local function g(k, default)
        return mw.text.trim(args[k] or "") ~= "" and args[k] or default
    end

    local img       = g("img",         "Placeholder.png")
    local nome      = g("nome",        "Nome do Boss")
    local frase     = g("frase",       "Frase ou lema do boss.")
    local hp        = g("hp",          "???")
    local exp       = g("exp",         "???")
    local nivel     = g("nivel",       "???")
    local fresco    = g("fresco",      "--")
    local forte     = g("forte",       "--")
    local reflete   = g("reflete",     "--")
    local comum     = g("comum",       "--")
    local semicaro  = g("semicaro",    "--")
    local raro      = g("raro",        "--")
    local muitoRaro = g("muitoraro",   "--")

    ----------------------------------------------------------
    -- CSS correto usando addHeadItem
    ----------------------------------------------------------
    local css = [[
        <style>
        @media screen and (max-width: 650px) {
            .boss-main {
                display: flex;
                flex-direction: column !important;
                text-align: center;
                gap: 16px;
            }
            .boss-img-box img {
                width: 70px !important;
                height: 70px !important;
            }
            .boss-stats {
                align-items: center !important;
            }
        }
        </style>
    ]]

    parent:getOutput():addHeadItem(css)

    ----------------------------------------------------------
    -- HTML de retorno
    ----------------------------------------------------------
    local html = mw.html.create("div"):addClass("boss-main")

    local imgBox = html:tag("div"):addClass("boss-img-box")
    imgBox:tag("img")
        :attr("src", img)
        :attr("alt", nome)

    local stats = html:tag("div"):addClass("boss-stats")

    stats:wikitext(string.format([[
    ! **%s**  
    *%s*

    • **HP:** %s  
    • **Experiência:** %s  
    • **Nível:** %s  

    **Drops:**  
    • Fresco: %s  
    • Forte: %s  
    • Reflete: %s  
    • Comum: %s  
    • Semicaro: %s  
    • Raro: %s  
    • Muito raro: %s  
    ]],
        nome, frase, hp, exp, nivel,
        fresco, forte, reflete, comum, semicaro, raro, muitoRaro
    ))

    return tostring(html)
end

return p