bugfix250107.1

本Wiki对全体读者开放编辑,如有编辑相关问题欢迎添加首页交流群询问,欢迎更多玩家加入我们。

按右上角“WIKI功能→编辑”即可修改页面内容。

全站通知:

模块:角色

来自命运扳机WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:角色/doc创建

local p = {}

local acandy = require("模块:ACandy")
local get = require("模块:Get")
local a, Raw, Fragment = acandy.a, acandy.Raw, acandy.Fragment
local div, span, ul, li = a.div, a.span, a.ul, a.li

local skinData = mw.loadData("模块:角色/SkinData")

local qualityColor = {
	["完美"] = "#e8ae48",
	["卓越"] = "#ca53f7",
	["精致"] = "#5d7fff",
	["初始"] = "#ECECEC",
}

-- 获取当前页面标题
local function getPageTitle()
	return mw.title.getCurrentTitle().text
end

----角色页角色时装----
local function createSkinTab(frame, roleName, skinName, skinQuality)
	local borderColor = qualityColor[skinQuality]  -- 获取品质颜色
	local skinTabNav, skinTabContent = "", ""

	if skinQuality ~= "卓越" then
		skinTabNav = li { style = "display: inline;border-radius:5px;margin:0 3px;padding:5px;", frame:callParserFunction('#tag:a', { '立绘', href = '#'..skinName..'立绘', ['data-toggle'] = 'tab' }) }
		skinTabContent = div { class = "tab-pane", id = skinName.."立绘", "[[文件:"..roleName.."-"..skinName.."立绘.png]]" }
	end

	-- 返回时装标签和内容
	return li { class = "bili-list-style", style = "padding: 0;border: 3px solid "..borderColor..";",
			span { class = "tab-panel",
				skinName,
			},
		},
		div { class = "resp-tab-content",
			div { class = "tab skinImgTab", style = "display: flex;width: 100%;flex-direction: row-reverse;",
				ul { class = "tab-nav", style = "margin: 0 0 0 0.8em;writing-mode: vertical-rl;",
					li { class = "active", style = "display: inline;margin: 0 3px;padding: 5px;", frame:callParserFunction('#tag:a', { '模型正面', href = '#'..skinName..'模型正面', ['data-toggle'] = 'tab' }) },
					li { style = "display: inline;margin: 0 3px;padding: 5px;", frame:callParserFunction('#tag:a', { '模型背面', href = '#'..skinName..'模型背面', ['data-toggle'] = 'tab' }) },
					skinTabNav,
				},
				div { class = "tab-content",
					div { class = "tab-pane active", id = skinName.."模型正面", frame:expandTemplate{ title = 'EagerImg'} .. "[[文件:"..roleName.."皮肤-"..skinName..".jpg|link=]]" },
					div { class = "tab-pane", id = skinName.."模型背面", "[[文件:"..roleName.."皮肤-"..skinName.."_背面.jpg|link=]]" },
					skinTabContent,
				},
			},
		}
end

p["角色时装"] = function (frame)
	local pageName = getPageTitle()  -- 获取角色名称
	local skinsByQuality = {
		["私服"] = {}, ["传说"] = {}, ["完美"] = {}, ["卓越"] = {},
	}

	-- 根据品质分类角色皮肤
	local roleSkinData = skinData[pageName]
	if roleSkinData then
		for skinName, skin in pairs(roleSkinData) do
			local rarity = skin['稀有度']
			local skinsOfThisQuality = skinsByQuality[rarity]
			if skinsOfThisQuality then
				skinsOfThisQuality[#skinsOfThisQuality + 1] = skinName
			end
		end
	end

	-- 插入默认“作战服”
	local tabLabels, tabBodies = {}, {}
	tabLabels[1], tabBodies[1] = createSkinTab(frame, pageName, "作战服", "初始")

	-- 遍历其他品质皮肤
	for quality in get("私服", "传说", "完美", "卓越") do
		local len = #tabLabels
		for i, skinName in ipairs(skinsByQuality[quality]) do
			local label, body = createSkinTab(frame, pageName, skinName, quality)
			tabLabels[len + i] = label
			tabBodies[len + i] = body
		end
	end

	-- 设置第一个为激活状态
	if tabLabels[1] then
		tabLabels[1].class = (tabLabels[1].class or "") .. " active"
		tabBodies[1].style = (tabBodies[1].style or "") .. ";display:block"
	end

	-- 返回角色时装的HTML
	return div { class = "resp-tabs role-skin-tabs",
		ul { class = "resp-tabs-list clearfix",
			tabLabels,
		},
		div { class = "resp-tabs-container",
			tabBodies,
		},
	}, a.br
end

return p