Module:SkillNav/zh-hant
From Elwiki
Documentation for this module may be created at Module:SkillNav/zh-hant/doc
require('Module:CommonFunctions')
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
local isForceNav = args.forcenav ~= nil
-- 準備技能類別
local skill_types
if not isForceNav then
skill_types = {{
name = args.l_hyper,
abbr = 'HA'
}, {
name = args.l_secret,
abbr = 'SeA'
}, {
name = args.l_special,
abbr = 'SA'
}, {
name = args.l_active,
abbr = 'A'
}, {
name = args.l_mod,
abbr = 'FC',
mod = true,
link_suffix = '/Mod'
}, {
name = args.l_mod2,
abbr = 'FC2',
mod = true,
force_class = 'base'
}, {
name = args.l_buff,
abbr = 'B'
}, {
name = args.l_passive,
abbr = 'P'
}, {
name = args.l_demon,
abbr = 'MD'
}, {
name = '[[File:ForceIcon.png|16px]] ' .. args.l_demon,
abbr = 'MDF',
mod = true,
link_suffix = '/Mod'
}, {
name = args.l_master,
abbr = 'MS'
}, {
name = args.l_couple,
abbr = 'Wed'
}}
end
-- 設定角色名稱
if args.name == nil then
args.name = args.Name
end
local skill_nav = mw.html.create('div'):addClass('skill-nav')
if isForceNav then
skill_nav:addClass('force-nav')
end
-- 設定標題
local header = skill_nav:tag('div'):addClass('skill-nav-header')
local colors = args.color or frame:expandTemplate{
title = 'ColorSel',
args = {'Character', args.char}
}
colors = colors:gsub('#', '#')
header:css('background-color', colors)
-- 設定標題文字
if args.l_name == nil then
args.l_name = args.name
end
local headerText = header:tag('span'):addClass('skill-nav-title')
if not isForceNav then
headerText:wikitext('[[' .. args.name .. '|' .. args.l_name .. ']] - ' .. args.l_skills)
else
headerText:wikitext(args.name)
end
-- 技能欄位內容
local skill_nav_wrap = skill_nav:tag('div'):addClass('skill-nav-inner-wrap border-color')
-- 產生技能導航內容
for _, v2 in pairs(skill_types) do
local name = v2.name
local abbr = v2.abbr
local mod = v2.mod
local link_suffix = v2.link_suffix or ''
if args[abbr] then
local skills = split(args[abbr], ';') -- 技能列表
local i = 1
skill_nav_wrap:tag('div'):addClass('skill-nav-sub-head border-color tone-4'):wikitext(name)
local content = skill_nav_wrap:tag('div'):addClass('skill-nav-skill-content border-color tone-6')
for _, skill_data in pairs(skills) do
if skill_data then
local skill_parts = split(skill_data, ',')
local skill_icon = trim(skill_parts[1]) -- 圖片檔案
local skill_link = trim(skill_parts[2]) -- 跳轉連結
local skill_display_name = trim(skill_parts[3]) -- 顯示名稱
local skill_entry = content:tag('div')
:addClass('skill-nav-skill tone-7-hover color-normal-force-link tone-8-active')
skill_entry:wikitext('[[' .. skill_link .. '|' .. skill_display_name .. ']]')
local skill_icon_div = skill_entry:tag('div'):addClass('skill-nav-image')
if mod then
skill_icon_div:wikitext(frame:expandTemplate{
title = 'Force',
args = {
skill_icon,
link = skill_link,
size = '3'
}
})
else
skill_icon_div:wikitext('[[File:' .. skill_icon .. '|30px|link=' .. skill_link .. ']]')
end
end
i = i + 1
end
end
end
return tostring(skill_nav)
end
return p