local p = {}
-- 调用现有的 Pokemon Color 模块
local pokemonColor = require('Module:Pokemon Color')
-- 世代到游戏名称的映射
local genToGame = {
["1"] = "红/绿",
["1-2"] = "蓝",
["1-3"] = "皮卡丘",
["2"] = "金/银",
["2-2"] = "水晶版",
["3"] = "红宝石/蓝宝石",
["3-2"] = "火红/叶绿",
["3-3"] = "绿宝石",
["4"] = "钻石/珍珠",
["4-2"] = "白金",
["4-3"] = "心灵之金/灵魂之银",
["5"] = "黑/白",
["5-2"] = "黑2/白2",
["6"] = "X/Y",
["6-2"] = "欧米伽红宝石/阿尔法蓝宝石",
["7"] = "太阳/月亮",
["7-2"] = "究极之日/究极之月",
["7-3"] = "Let's Go! 皮卡丘/Let's Go! 伊布",
["8"] = "剑/盾",
["8-2"] = "晶灿钻石/明亮珍珠",
["8-3"] = "传说 阿尔宙斯",
["9"] = "朱/紫",
["9-2"] = "传说 Z-A"
}
-- 世代到中文数字的映射
local genToChinese = {
["1"] = "一",
["2"] = "二",
["3"] = "三",
["4"] = "四",
["5"] = "五",
["6"] = "六",
["7"] = "七", ["7-2"] = "七", ["7-3"] = "七",
["8"] = "八", ["8-2"] = "八", ["8-3"] = "八",
["9"] = "九", ["9-2"] = "九"
}
-- 获取类型颜色
function p.getTypeColor(frame)
local typeName = frame.args[1]
return pokemonColor.getColor(frame) or "2980ef" -- 默认水属性颜色
end
-- 获取游戏名称
function p.getGameName(frame)
local gen = frame.args[1]
return genToGame[gen] or "未知"
end
-- 获取完整游戏名称(带宝可梦前缀)
function p.getFullGameName(frame)
local gen = frame.args[1]
local gameName = genToGame[gen] or "未知"
if gen == "7" or gen == "7-2" or gen == "7-3" then
return "精灵宝可梦 " .. gameName
elseif gen == "8-3" or gen == "9-2" then
return "宝可梦" .. gameName
else
return "宝可梦 " .. gameName
end
end
-- 获取世代中文数字
function p.getGenChinese(frame)
local gen = frame.args[1]
return genToChinese[gen] or "未知"
end
-- 生成属性分类
function p.getTypeCategories(frame)
local types = {}
local args = frame.args
-- 收集所有类型参数
for key, value in pairs(args) do
if string.match(key, "^type%d+") and value and value ~= "" then
table.insert(types, value)
end
end
local result = {}
for _, typeName in ipairs(types) do
table.insert(result, "{{ArticleCategory|" .. typeName .. "属性宝可梦}}")
end
return table.concat(result, "")
end
-- 生成样式字符串
function p.getStyles(frame)
local type1 = frame.args.type1 or "水"
local type2 = frame.args.type2
local color1 = pokemonColor.getColor({args = {type1}}) or "2980ef"
local color2 = type2 and (pokemonColor.getColor({args = {type2}}) or "2980ef") or color1
local leftStyle = 'style="background-color: #' .. color1 .. '; color: #FFF; width: 56px;"'
local rowStyle = 'style="background-color: #' .. color1 .. '; color: #FFF;"'
return {
left = leftStyle,
row = rowStyle,
color1 = color1,
color2 = color2
}
end
-- 生成左侧样式
function p.getLeftStyle(frame)
local typeName = frame.args[1] or "水"
local color = pokemonColor.getColor(frame) or "2980ef"
return 'style="background-color: #' .. color .. '; color: #FFF; width: 56px;"'
end
-- 生成行样式
function p.getRowStyle(frame)
local typeName = frame.args[1] or "水"
local color = pokemonColor.getColor(frame) or "2980ef"
return 'style="background-color: #' .. color .. '; color: #FFF;"'
end
-- 生成头部样式
function p.getHeaderStyle(frame)
local typeName = frame.args[1] or "水"
local color = pokemonColor.getColor(frame) or "2980ef"
return 'style="background-color: #' .. color .. '; color: #FFF; padding: 1em;"'
end
return p