- Welcome to the Kancolle Wiki!
- If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord
Difference between revisions of "Module:EquipmentLink"
Jump to navigation
Jump to search
(38 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
local getArgs = require("Module:GetArgs") | local getArgs = require("Module:GetArgs") | ||
− | local U = require("Module: | + | local U = require("Module:Core") |
local F = require("Module:Formatting") | local F = require("Module:Formatting") | ||
local Equipment = require("Module:Equipment") | local Equipment = require("Module:Equipment") | ||
local EquipmentCardKai = require("Module:EquipmentCardKai") | local EquipmentCardKai = require("Module:EquipmentCardKai") | ||
+ | local EquipmentGraphicKai = require("Module:EquipmentGraphicKai") | ||
local EquipmentLink = {} | local EquipmentLink = {} | ||
Line 9: | Line 10: | ||
function EquipmentLink.format(frame, args) | function EquipmentLink.format(frame, args) | ||
− | args = args or | + | args = args |
+ | or U.getTemplateArgs(frame).implicit[1] and U.getTemplateArgs(frame).implicit | ||
+ | or U.getTemplateArgs(frame).explicit | ||
+ | local name = args[1] or "??" | ||
local text = args.text | local text = args.text | ||
local link = args.link | local link = args.link | ||
local image = args.image | local image = args.image | ||
local icon = args.icon | local icon = args.icon | ||
+ | |||
+ | local size = args.size or (args[2] and "160px" or "260px") | ||
local cards = {} | local cards = {} | ||
for _, arg in ipairs(args) do | for _, arg in ipairs(args) do | ||
− | table.insert(cards, EquipmentCardKai: | + | local equip = arg ~= "-" and Equipment(arg) |
+ | table.insert( | ||
+ | cards, | ||
+ | arg == "-" and | ||
+ | "<br />" or | ||
+ | equip._is_enemy and | ||
+ | EquipmentGraphicKai:get{ equip = equip, size = size } or | ||
+ | EquipmentCardKai:get{ equip = equip, size = size } | ||
+ | ) | ||
end | end | ||
− | local | + | local formatted_image |
= image | = image | ||
− | and EquipmentCardKai:Asset({ name, size = image, link = link or name }) | + | and EquipmentCardKai:Asset({ name, size = image == "true" and "50px" or image, link = link or name }) |
− | or | + | or "" |
local formatted_icon | local formatted_icon | ||
Line 31: | Line 45: | ||
and F:format_image{ F:format_equipment_icon(Equipment(name):icon()) } | and F:format_image{ F:format_equipment_icon(Equipment(name):icon()) } | ||
or "" | or "" | ||
+ | |||
+ | local formatted_text | ||
+ | |||
+ | if text then | ||
+ | if text == "true" then | ||
+ | formatted_text = F:format_link(link or name, name) | ||
+ | else | ||
+ | formatted_text = F:format_link(link or name, text) | ||
+ | end | ||
+ | else | ||
+ | if image then | ||
+ | formatted_text = "" | ||
+ | else | ||
+ | formatted_text = F:format_link(link or name, name) | ||
+ | end | ||
+ | end | ||
− | local tooltip_content = F: | + | local tooltip_content = F:class_span("tooltiptext", nil, #cards > 0 and table.concat(cards, "") or "??") |
− | return F:class_span(" | + | return F:class_span("tooltip", nil, formatted_icon .. formatted_image .. formatted_text .. tooltip_content) |
end | end | ||
− | |||
U.registerFormatTests(EquipmentLink, { | U.registerFormatTests(EquipmentLink, { | ||
{ "Prototype 51cm Twin Gun Mount" }, | { "Prototype 51cm Twin Gun Mount" }, | ||
Line 45: | Line 74: | ||
{ "Prototype 51cm Twin Gun Mount", image = "50px" }, | { "Prototype 51cm Twin Gun Mount", image = "50px" }, | ||
{ "Prototype 51cm Twin Gun Mount", icon = "x" }, | { "Prototype 51cm Twin Gun Mount", icon = "x" }, | ||
+ | { "Prototype 51cm Twin Gun Mount", "Prototype 51cm Twin Gun Mount" }, | ||
{ }, | { }, | ||
{ icon = "x" }, | { icon = "x" }, | ||
}) | }) | ||
-- p.run_format_tests() | -- p.run_format_tests() | ||
− | |||
return EquipmentLink | return EquipmentLink |
Latest revision as of 15:15, 30 April 2023
Documentation for this module may be created at Module:EquipmentLink/doc
local getArgs = require("Module:GetArgs")
local U = require("Module:Core")
local F = require("Module:Formatting")
local Equipment = require("Module:Equipment")
local EquipmentCardKai = require("Module:EquipmentCardKai")
local EquipmentGraphicKai = require("Module:EquipmentGraphicKai")
local EquipmentLink = {}
function EquipmentLink.format(frame, args)
args = args
or U.getTemplateArgs(frame).implicit[1] and U.getTemplateArgs(frame).implicit
or U.getTemplateArgs(frame).explicit
local name = args[1] or "??"
local text = args.text
local link = args.link
local image = args.image
local icon = args.icon
local size = args.size or (args[2] and "160px" or "260px")
local cards = {}
for _, arg in ipairs(args) do
local equip = arg ~= "-" and Equipment(arg)
table.insert(
cards,
arg == "-" and
"<br />" or
equip._is_enemy and
EquipmentGraphicKai:get{ equip = equip, size = size } or
EquipmentCardKai:get{ equip = equip, size = size }
)
end
local formatted_image
= image
and EquipmentCardKai:Asset({ name, size = image == "true" and "50px" or image, link = link or name })
or ""
local formatted_icon
= icon
-- [[Category:Todo]] again, would be nice to share Equipment object with EquipmentCardKai
and F:format_image{ F:format_equipment_icon(Equipment(name):icon()) }
or ""
local formatted_text
if text then
if text == "true" then
formatted_text = F:format_link(link or name, name)
else
formatted_text = F:format_link(link or name, text)
end
else
if image then
formatted_text = ""
else
formatted_text = F:format_link(link or name, name)
end
end
local tooltip_content = F:class_span("tooltiptext", nil, #cards > 0 and table.concat(cards, "") or "??")
return F:class_span("tooltip", nil, formatted_icon .. formatted_image .. formatted_text .. tooltip_content)
end
U.registerFormatTests(EquipmentLink, {
{ "Prototype 51cm Twin Gun Mount" },
{ "Type 4 Passive Sonar", link = "Sonar" },
{ "Prototype 51cm Twin Gun Mount", "P51cm" },
{ "Prototype 51cm Twin Gun Mount", image = "50px" },
{ "Prototype 51cm Twin Gun Mount", icon = "x" },
{ "Prototype 51cm Twin Gun Mount", "Prototype 51cm Twin Gun Mount" },
{ },
{ icon = "x" },
})
-- p.run_format_tests()
return EquipmentLink