이 모듈에 대한 설명문서는 모듈:궤적시리즈/하늘의 궤적/캐릭터 스테이터스/설명문서에서 만들 수 있습니다
local p = {}
-- 쉼표로 구분된 문자열을 숫자 배열로 변환
local function parseValues(str)
local values = {}
for val in string.gmatch(str or "", "([^,]+)") do
table.insert(values, val)
end
return values
end
function p.renderCharacterStats(frame)
local stats = {
{name="HP", vals=parseValues(frame.args.HP)},
{name="STR", vals=parseValues(frame.args.STR)},
{name="DEF", vals=parseValues(frame.args.DEF)},
{name="ATS", vals=parseValues(frame.args.ATS)},
{name="ADF", vals=parseValues(frame.args.ADF)},
{name="DEX", vals=parseValues(frame.args.DEX)},
{name="AGL", vals=parseValues(frame.args.AGL)},
{name="MOV", vals=parseValues(frame.args.MOV)},
{name="RNG", vals=parseValues(frame.args.RNG)},
{name="SPD", vals=parseValues(frame.args.SPD)},
{name="HIT", vals=parseValues(frame.args.HIT)},
{name="CRT", vals=parseValues(frame.args.CRT)},
{name="EVA", vals=parseValues(frame.args.EVA)},
{name="MEVA", vals=parseValues(frame.args.MEVA)}
}
local html = mw.html.create("div"):css{
display="flex", flex_wrap="wrap", gap="10px",
justify_content="center", align_items="flex-start"
}
local function makeTable(tblStats)
local tbl = mw.html.create("table"):addClass("wikitable")
:css{
flex="1", min_width="300px", text_align="center", border_collapse="collapse",
margin="0", border_radius="8px", overflow="hidden", border_style="hidden"
}
-- 헤더
tbl:tag("tr")
:tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:30%"):wikitext("능력치")
:done()
:tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("성장치")
:done()
:tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv1")
:done()
:tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv50")
:done()
:tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv120")
-- 각 행
for i, stat in ipairs(tblStats) do
local tr = tbl:tag("tr")
-- 능력치 이름
tr:tag("td"):css("background-color","#446DFF;color:white;font-weight:bold;text-align:left;padding:6px"):wikitext(stat.name)
-- 입력값: 홀짝행 색 적용
local bg = (i % 2 == 1) and "#EDF3FF" or ""
for j=1,4 do
tr:tag("td"):css("background-color",bg):css("padding","6px"):css("width","17.5%"):wikitext(stat.vals[j] or "")
end
end
return tbl
end
-- 왼쪽/오른쪽 표를 나눠서 표시
html:node(makeTable({unpack(stats,1,7)}))
html:node(makeTable({unpack(stats,8,14)}))
return tostring(html)
end
return p