Module:SkillNav/zh-hant: Difference between revisions
From Elwiki
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
local p = {} | local p = {} | ||
function p.main(frame) | function p.main(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local isForceNav = args.forcenav ~= nil | |||
-- | -- 準備技能類別 | ||
local skill_types | |||
if not isForceNav then | |||
local skill_types | |||
if | |||
skill_types = {{ | skill_types = {{ | ||
name = args.l_hyper | name = args.l_hyper, | ||
abbr = 'HA' | abbr = 'HA' | ||
}, { | }, { | ||
name = args.l_secret | name = args.l_secret, | ||
abbr = 'SeA' | abbr = 'SeA' | ||
}, { | }, { | ||
name = args.l_special | name = args.l_special, | ||
abbr = 'SA' | abbr = 'SA' | ||
}, { | }, { | ||
name = args.l_active | name = args.l_active, | ||
abbr = 'A' | abbr = 'A' | ||
}, { | }, { | ||
name = args.l_mod | name = args.l_mod, | ||
abbr = 'FC', | abbr = 'FC', | ||
mod = true, | mod = true, | ||
link_suffix = '/Mod' | link_suffix = '/Mod' | ||
}, { | }, { | ||
name = args.l_mod2 | name = args.l_mod2, | ||
abbr = 'FC2', | abbr = 'FC2', | ||
mod = true, | mod = true, | ||
force_class = 'base' | force_class = 'base' | ||
}, { | }, { | ||
name = args.l_buff | name = args.l_buff, | ||
abbr = 'B' | abbr = 'B' | ||
}, { | }, { | ||
name = args.l_passive | name = args.l_passive, | ||
abbr = 'P' | abbr = 'P' | ||
}, { | }, { | ||
name = args.l_demon | name = args.l_demon, | ||
abbr = 'MD' | abbr = 'MD' | ||
}, { | }, { | ||
name = '[[File:ForceIcon.png|16px]] ' .. args.l_demon | name = '[[File:ForceIcon.png|16px]] ' .. args.l_demon, | ||
abbr = 'MDF', | abbr = 'MDF', | ||
mod = true, | mod = true, | ||
link_suffix = '/Mod' | link_suffix = '/Mod' | ||
}, { | }, { | ||
name = args.l_master | name = args.l_master, | ||
abbr = 'MS' | abbr = 'MS' | ||
}, { | }, { | ||
name = args.l_couple | name = args.l_couple, | ||
abbr = 'Wed' | abbr = 'Wed' | ||
}} | }} | ||
end | end | ||
-- | -- 設定角色名稱 | ||
if | if args.name == nil then | ||
args.name = args.Name | args.name = args.Name | ||
end | end | ||
local skill_nav = mw.html.create('div'):addClass('skill-nav') | |||
local skill_nav = mw.html.create('div'):addClass('skill-nav') | if isForceNav then | ||
if | skill_nav:addClass('force-nav') | ||
skill_nav:addClass('force-nav') | |||
end | end | ||
-- | -- 設定標題 | ||
local header = skill_nav:tag('div'):addClass('skill-nav-header') | local header = skill_nav:tag('div'):addClass('skill-nav-header') | ||
local | 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 | end | ||
local headerText = header:tag('span'):addClass('skill-nav-title') | |||
if not isForceNav then | |||
headerText:wikitext('[[' .. args.name .. '|' .. args.l_name .. ']] - ' .. args.l_skills) | |||
local headerText = header:tag('span'):addClass('skill-nav-title') | |||
if | |||
headerText:wikitext('[[' .. args.name | |||
else | else | ||
headerText:wikitext(args.name) | headerText:wikitext(args.name) | ||
end | end | ||
-- | -- 技能欄位內容 | ||
local skill_nav_wrap = skill_nav:tag('div'):addClass('skill-nav-inner-wrap border-color') | local skill_nav_wrap = skill_nav:tag('div'):addClass('skill-nav-inner-wrap border-color') | ||
-- | -- 產生技能導航內容 | ||
for | for _, v2 in pairs(skill_types) do | ||
local name = v2 | local name = v2.name | ||
local abbr = v2 | local abbr = v2.abbr | ||
local mod = v2.mod | |||
local mod = v2 | local link_suffix = v2.link_suffix or '' | ||
local link_suffix = v2 | |||
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) | |||
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 | else | ||
skill_icon_div:wikitext('[[File:' .. skill_icon .. '|30px|link=' .. skill_link .. ']]') | |||
end | end | ||
end | end | ||
i = i + 1 | |||
end | end | ||
end | end | ||
end | end | ||
return tostring(skill_nav) | |||
return tostring(skill_nav) | |||
end | end | ||
return p | return p |
Revision as of 11:12, 28 March 2025
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