- 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:EquipmentInfoKai"
Jump to navigation
Jump to search
com>Ckwng |
com>Ckwng |
||
Line 1: | Line 1: | ||
+ | local BaseData = require('Module:BaseData') | ||
local Equipment = require('Module:Equipment') | local Equipment = require('Module:Equipment') | ||
+ | local EquipmentCardKai = require('Module:EquipmentCardKai') | ||
local Formatting = require('Module:Formatting') | local Formatting = require('Module:Formatting') | ||
local format = require('Module:StringInterpolation').format | local format = require('Module:StringInterpolation').format | ||
− | local EquipmentInfoKai = { | + | local EquipmentInfoKai = BaseData{ |
− | _template = [[{|class=" | + | _template = [[{|class="${table_class}" id="${table_id}" style="border: 1px solid darkgray; width: 400px; float: ${float};" |
|- | |- | ||
| colspan="2" style="position: relative; padding: 1px 40px; text-align: center; background-color: ${back};${extra_style};"|<div style="position: absolute; right: 5px;">${edit_link}</div> | | colspan="2" style="position: relative; padding: 1px 40px; text-align: center; background-color: ${back};${extra_style};"|<div style="position: absolute; right: 5px;">${edit_link}</div> | ||
Line 38: | Line 40: | ||
_empty_card = "Empty equipment card slot.png", | _empty_card = "Empty equipment card slot.png", | ||
_shown_ship_types = { | _shown_ship_types = { | ||
− | 2, | + | 2, 3, |
− | + | 21, 4, | |
− | + | 5, 6, | |
− | 21, | + | 8, 9, |
− | + | 10, 7, | |
− | + | 11, 18, | |
− | + | 13, 14, | |
− | + | 20, 16, | |
− | + | 17, 19, | |
− | + | }, | |
− | + | _fields = { | |
− | + | "edit_link", | |
− | + | "back", | |
− | + | "name", | |
− | + | "localized_name", | |
− | + | "alternative_names", | |
− | + | "id", | |
− | + | "japanese_name", | |
− | + | "icon", | |
− | + | "eq_type", | |
− | + | "effects", | |
− | + | "scrap", | |
− | + | "image", | |
− | + | "compatibility_details", | |
− | + | }, | |
− | |||
− | } | ||
} | } | ||
− | function EquipmentInfoKai: | + | function EquipmentInfoKai:Infobox(args) |
− | return | + | return self{ |
+ | _args = args, | ||
+ | }:create_infobox() | ||
end | end | ||
− | function EquipmentInfoKai: | + | function EquipmentInfoKai:edit_link() |
− | + | self._vars.edit_link = Formatting:format_edit_link(self._equipment_data_module, self._edit_link_text, self._equipment_data_documentation) | |
end | end | ||
− | function EquipmentInfoKai: | + | function EquipmentInfoKai:back() |
− | local back = | + | local back = self._equipment:back() |
− | + | self._vars.back, self._vars.extra_style = Formatting:format_equipment_back(back), Formatting:extra_style_background_image(false, back and back >= 4) | |
end | end | ||
− | function EquipmentInfoKai:name( | + | function EquipmentInfoKai:name() |
− | + | self._vars.name = Formatting:format_link(self._equipment:link()) | |
end | end | ||
− | function EquipmentInfoKai:localized_name( | + | function EquipmentInfoKai:localized_name() |
− | local localized_name = | + | local localized_name = self._equipment:localized_name() |
if localized_name then | if localized_name then | ||
− | + | self._vars.localized_name = format{self._localized_name_template, localized_name = localized_name} | |
+ | else | ||
+ | self._vars.localized_name = "" | ||
end | end | ||
− | |||
end | end | ||
− | function EquipmentInfoKai:alternative_names( | + | function EquipmentInfoKai:alternative_names() |
local alternative_names = {} | local alternative_names = {} | ||
− | local list_name = | + | local list_name = self._equipment:list_name() |
− | local library_name = | + | local library_name = self._equipment:library_name() |
− | local comparison_name = | + | local comparison_name = self._equipment:comparison_name() |
if list_name then | if list_name then | ||
− | local list_japanese_name = | + | local list_japanese_name = self._equipment:list_japanese_name() |
− | local list_reading = | + | local list_reading = self._equipment:list_reading() |
if list_reading ~= false then | if list_reading ~= false then | ||
list_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(list_japanese_name), Formatting:format_stat(list_reading))) | list_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(list_japanese_name), Formatting:format_stat(list_reading))) | ||
end | end | ||
− | local list_localized_name = | + | local list_localized_name = self._equipment:list_localized_name() |
if list_localized_name then | if list_localized_name then | ||
list_name = Formatting:tooltip(Formatting:format_stat(list_name), Formatting:format_stat(list_localized_name)) | list_name = Formatting:tooltip(Formatting:format_stat(list_name), Formatting:format_stat(list_localized_name)) | ||
Line 112: | Line 115: | ||
end | end | ||
if library_name then | if library_name then | ||
− | local library_japanese_name = | + | local library_japanese_name = self._equipment:library_japanese_name() |
− | local library_reading = | + | local library_reading = self._equipment:library_reading() |
if library_reading ~= false then | if library_reading ~= false then | ||
library_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(library_japanese_name), Formatting:format_stat(library_reading))) | library_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(library_japanese_name), Formatting:format_stat(library_reading))) | ||
end | end | ||
− | local library_localized_name = | + | local library_localized_name = self._equipment:library_localized_name() |
if library_localized_name then | if library_localized_name then | ||
library_name = Formatting:tooltip(Formatting:format_stat(library_name), Formatting:format_stat(library_localized_name)) | library_name = Formatting:tooltip(Formatting:format_stat(library_name), Formatting:format_stat(library_localized_name)) | ||
Line 126: | Line 129: | ||
end | end | ||
if comparison_name then | if comparison_name then | ||
− | local comparison_japanese_name = | + | local comparison_japanese_name = self._equipment:comparison_japanese_name() |
− | local comparison_reading = | + | local comparison_reading = self._equipment:comparison_reading() |
if comparison_reading ~= false then | if comparison_reading ~= false then | ||
comparison_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(comparison_japanese_name), Formatting:format_stat(comparison_reading))) | comparison_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(comparison_japanese_name), Formatting:format_stat(comparison_reading))) | ||
end | end | ||
− | local comparison_localized_name = | + | local comparison_localized_name = self._equipment:comparison_localized_name() |
if comparison_localized_name then | if comparison_localized_name then | ||
comparison_name = Formatting:tooltip(Formatting:format_stat(comparison_name), Formatting:format_stat(comparison_localized_name)) | comparison_name = Formatting:tooltip(Formatting:format_stat(comparison_name), Formatting:format_stat(comparison_localized_name)) | ||
Line 140: | Line 143: | ||
end | end | ||
if #alternative_names == 0 then | if #alternative_names == 0 then | ||
− | + | self._vars.alternative_names = "" | |
+ | else | ||
+ | self._vars.alternative_names = format{self._alternative_names_template, names = table.concat(alternative_names, "<br/>")} | ||
end | end | ||
− | |||
end | end | ||
− | function EquipmentInfoKai:id( | + | function EquipmentInfoKai:id() |
− | + | self._vars.id = Formatting:format_stat(self._equipment:id()) | |
end | end | ||
− | function EquipmentInfoKai:japanese_name( | + | function EquipmentInfoKai:japanese_name() |
− | + | self._vars.japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(self._equipment:japanese_name()), Formatting:format_stat(self._equipment:reading()))) | |
end | end | ||
− | function EquipmentInfoKai:icon( | + | function EquipmentInfoKai:icon() |
− | + | self._vars.icon = Formatting:format_image{Formatting:format_equipment_icon(self._equipment:icon())} | |
end | end | ||
− | function EquipmentInfoKai:eq_type( | + | function EquipmentInfoKai:eq_type() |
− | + | self._vars.eq_type = Formatting:tooltip(Formatting:format_equipment_type(self._equipment:type()), Formatting:format_equipment_rarity(self._equipment:rarity())) | |
end | end | ||
− | function EquipmentInfoKai:effects( | + | function EquipmentInfoKai:effects() |
− | + | self._vars.effects = Formatting:format_stat_bonuses{ | |
− | firepower = | + | firepower = self._equipment:firepower(), |
− | bombing = | + | bombing = self._equipment:bombing(), |
− | torpedo = | + | torpedo = self._equipment:torpedo(), |
− | aa = | + | aa = self._equipment:aa(), |
− | armor = | + | armor = self._equipment:armor(), |
− | asw = | + | asw = self._equipment:asw(), |
− | shelling_accuracy = | + | shelling_accuracy = self._equipment:shelling_accuracy(), |
− | torpedo_accuracy = | + | torpedo_accuracy = self._equipment:torpedo_accuracy(), |
− | evasion = | + | evasion = self._equipment:evasion(), |
− | los = | + | los = self._equipment:los(), |
− | speed = Formatting:format_speed( | + | speed = Formatting:format_speed(self._equipment:speed()), |
− | luck = | + | luck = self._equipment:luck(), |
− | range = Formatting:format_range( | + | range = Formatting:format_range(self._equipment:range()), |
− | special = | + | special = self._equipment:special(), |
} | } | ||
end | end | ||
− | function EquipmentInfoKai:scrap( | + | function EquipmentInfoKai:scrap() |
− | + | self._vars.scrap = Formatting:format_resources(self._equipment:scrap()) | |
end | end | ||
− | function EquipmentInfoKai: | + | function EquipmentInfoKai:image() |
− | local card = equipment | + | local card = EquipmentCardKai{equipment = self._equipment} |
if card == false then | if card == false then | ||
card = self._empty_card | card = self._empty_card | ||
end | end | ||
− | local card_name = | + | local card_name = self._equipment:card_name() |
if card_name then | if card_name then | ||
local card_caption = {} | local card_caption = {} | ||
− | local card_local = | + | local card_local = self._equipment:card_localized_name() |
if card_local then | if card_local then | ||
table.insert(card_caption, Formatting:format_stat_with_max(card_name, card_local)) | table.insert(card_caption, Formatting:format_stat_with_max(card_name, card_local)) | ||
Line 199: | Line 203: | ||
end | end | ||
table.insert(card_caption, "/") | table.insert(card_caption, "/") | ||
− | table.insert(card_caption, Formatting:format_stat_with_max( | + | table.insert(card_caption, Formatting:format_stat_with_max(self._equipment:card_japanese_name(), self._equipment:card_reading())) |
return Formatting:format_image{card, | return Formatting:format_image{card, | ||
Line 205: | Line 209: | ||
} | } | ||
end | end | ||
− | + | self._vars.card = Formatting:format_image{card} | |
end | end | ||
− | function EquipmentInfoKai:compatibility_details( | + | function EquipmentInfoKai:compatibility_details() |
local result = {} | local result = {} | ||
for index, ship_type in ipairs(self._shown_ship_types) do | for index, ship_type in ipairs(self._shown_ship_types) do | ||
Line 214: | Line 218: | ||
table.insert(result, self._row_starter) | table.insert(result, self._row_starter) | ||
end | end | ||
− | local compatibility, note = | + | local compatibility, note = self._equipment:equippable(ship_type) |
local ship_label = Formatting:format_ship_type(ship_type) | local ship_label = Formatting:format_ship_type(ship_type) | ||
if note then | if note then | ||
Line 224: | Line 228: | ||
end | end | ||
− | function EquipmentInfoKai: | + | function EquipmentInfoKai:create_item() |
− | + | if self._args.name then | |
− | + | self._equipment = Equipment(self._args.name, self._args.model) | |
+ | else | ||
+ | self._equipment = Equipment(self._args[1]) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | function EquipmentInfoKai:get_module() | ||
+ | self._equipment_data_module = Equipment:get_module(self._args.name or self._args[1]) | ||
+ | end | ||
− | + | function EquipmentInfoKai:create_infobox_prep() | |
− | + | local table_classes = {"typography-xl-optout", "infobox"} | |
− | + | if self._args.classes then | |
− | + | table.insert(table_classes, self._args.classes) | |
− | + | end | |
− | + | local collapsible = self._args.collapsible | |
− | + | if collapsible then | |
− | + | table.insert(table_classes, "mw-collapsible") | |
− | + | table.insert(table_classes, "mw-collapsed") | |
− | + | end | |
− | + | self._vars.table_class = table.concat(table_classes, " ") | |
− | + | self._vars.table_id = collapsible and collapsible ~= "true" and ("mw-customcollapsible-" .. collapsible) or "" | |
− | + | self._vars.float = self._args.float or "none" | |
− | + | end | |
− | + | ||
− | + | function EquipmentInfoKai:format_template() | |
+ | for _, field in ipairs(self._fields) do | ||
+ | self[field](self) | ||
+ | end | ||
+ | return format(self._template, self._vars) | ||
+ | end | ||
+ | |||
+ | function EquipmentInfoKai:add_fields() | ||
+ | return | ||
+ | end | ||
+ | |||
+ | function EquipmentInfoKai:create_infobox() | ||
+ | self:add_fields() | ||
+ | self:create_item() | ||
+ | self:get_module() | ||
+ | self:create_infobox_prep() | ||
+ | return self:format_template() | ||
end | end | ||
return EquipmentInfoKai | return EquipmentInfoKai |
Revision as of 23:42, 14 June 2015
Documentation for this module may be created at Module:EquipmentInfoKai/doc
local BaseData = require('Module:BaseData')
local Equipment = require('Module:Equipment')
local EquipmentCardKai = require('Module:EquipmentCardKai')
local Formatting = require('Module:Formatting')
local format = require('Module:StringInterpolation').format
local EquipmentInfoKai = BaseData{
_template = [[{|class="${table_class}" id="${table_id}" style="border: 1px solid darkgray; width: 400px; float: ${float};"
|-
| colspan="2" style="position: relative; padding: 1px 40px; text-align: center; background-color: ${back};${extra_style};"|<div style="position: absolute; right: 5px;">${edit_link}</div>
<p style="font-size: 25px">'''${name}'''</p>${localized_name}
<p style="font-size: 20px">'''No.${id} ${japanese_name}'''</p>
|-
| colspan="2" style="text-align: center; background-color: whitesmoke;"|
'''${icon} ${eq_type}'''
<b>Effects: ${effects}</b>
'''Scrap value: ${scrap}'''${alternative_names}
|-
| colspan="2" style="text-align: center;" | ${card}
|-
| colspan="2" style="text-align: center; background-color: LightSkyBlue;" | '''Refittable Class'''
${compatibility_details}
|}]],
_row_starter = "|-",
_compatibility_cell = [[| style="width: 200px; text-align: center; background-color: ${bg_color};" | ${label}]],
_localized_name_template = "<p>''${localized_name}''</p>",
_alternative_names_template = [[
|-
| colspan="2" style="text-align: center; padding: 0px;" | <div class="mw-collapsible mw-collapsed" style="background-color: lightgrey; margin: 0px;">''Alternate names''<div class="mw-collapsible-content" style="background-color: whitesmoke;">
${names}
</div></div>]],
_alternative_name_template = [[<div style="display: inline-block; vertical-align: middle;"><small>''${label}:''</small></div> <div style="display: inline-block; vertical-align: middle;"><small>''${name}<br />${japanese_name}''</small></div>]],
_library_name_label = "Library name",
_list_name_label = "List name",
_comparison_name_label = "Comparison name",
_equipment_data_documentation = "Template:EquipmentDataDocumentation/EditIntro",
_edit_link_text = "Edit",
_empty_card = "Empty equipment card slot.png",
_shown_ship_types = {
2, 3,
21, 4,
5, 6,
8, 9,
10, 7,
11, 18,
13, 14,
20, 16,
17, 19,
},
_fields = {
"edit_link",
"back",
"name",
"localized_name",
"alternative_names",
"id",
"japanese_name",
"icon",
"eq_type",
"effects",
"scrap",
"image",
"compatibility_details",
},
}
function EquipmentInfoKai:Infobox(args)
return self{
_args = args,
}:create_infobox()
end
function EquipmentInfoKai:edit_link()
self._vars.edit_link = Formatting:format_edit_link(self._equipment_data_module, self._edit_link_text, self._equipment_data_documentation)
end
function EquipmentInfoKai:back()
local back = self._equipment:back()
self._vars.back, self._vars.extra_style = Formatting:format_equipment_back(back), Formatting:extra_style_background_image(false, back and back >= 4)
end
function EquipmentInfoKai:name()
self._vars.name = Formatting:format_link(self._equipment:link())
end
function EquipmentInfoKai:localized_name()
local localized_name = self._equipment:localized_name()
if localized_name then
self._vars.localized_name = format{self._localized_name_template, localized_name = localized_name}
else
self._vars.localized_name = ""
end
end
function EquipmentInfoKai:alternative_names()
local alternative_names = {}
local list_name = self._equipment:list_name()
local library_name = self._equipment:library_name()
local comparison_name = self._equipment:comparison_name()
if list_name then
local list_japanese_name = self._equipment:list_japanese_name()
local list_reading = self._equipment:list_reading()
if list_reading ~= false then
list_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(list_japanese_name), Formatting:format_stat(list_reading)))
end
local list_localized_name = self._equipment:list_localized_name()
if list_localized_name then
list_name = Formatting:tooltip(Formatting:format_stat(list_name), Formatting:format_stat(list_localized_name))
else
list_name = Formatting:format_stat(list_name)
end
table.insert(alternative_names, format{self._alternative_name_template, label = self._list_name_label, name = list_name, japanese_name = list_japanese_name})
end
if library_name then
local library_japanese_name = self._equipment:library_japanese_name()
local library_reading = self._equipment:library_reading()
if library_reading ~= false then
library_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(library_japanese_name), Formatting:format_stat(library_reading)))
end
local library_localized_name = self._equipment:library_localized_name()
if library_localized_name then
library_name = Formatting:tooltip(Formatting:format_stat(library_name), Formatting:format_stat(library_localized_name))
else
library_name = Formatting:format_stat(library_name)
end
table.insert(alternative_names, format{self._alternative_name_template, label = self._library_name_label, name = library_name, japanese_name = library_japanese_name})
end
if comparison_name then
local comparison_japanese_name = self._equipment:comparison_japanese_name()
local comparison_reading = self._equipment:comparison_reading()
if comparison_reading ~= false then
comparison_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(comparison_japanese_name), Formatting:format_stat(comparison_reading)))
end
local comparison_localized_name = self._equipment:comparison_localized_name()
if comparison_localized_name then
comparison_name = Formatting:tooltip(Formatting:format_stat(comparison_name), Formatting:format_stat(comparison_localized_name))
else
comparison_name = Formatting:format_stat(comparison_name)
end
table.insert(alternative_names, format{self._alternative_name_template, label = self._comparison_name_label, name = comparison_name, japanese_name = comparison_japanese_name})
end
if #alternative_names == 0 then
self._vars.alternative_names = ""
else
self._vars.alternative_names = format{self._alternative_names_template, names = table.concat(alternative_names, "<br/>")}
end
end
function EquipmentInfoKai:id()
self._vars.id = Formatting:format_stat(self._equipment:id())
end
function EquipmentInfoKai:japanese_name()
self._vars.japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(self._equipment:japanese_name()), Formatting:format_stat(self._equipment:reading())))
end
function EquipmentInfoKai:icon()
self._vars.icon = Formatting:format_image{Formatting:format_equipment_icon(self._equipment:icon())}
end
function EquipmentInfoKai:eq_type()
self._vars.eq_type = Formatting:tooltip(Formatting:format_equipment_type(self._equipment:type()), Formatting:format_equipment_rarity(self._equipment:rarity()))
end
function EquipmentInfoKai:effects()
self._vars.effects = Formatting:format_stat_bonuses{
firepower = self._equipment:firepower(),
bombing = self._equipment:bombing(),
torpedo = self._equipment:torpedo(),
aa = self._equipment:aa(),
armor = self._equipment:armor(),
asw = self._equipment:asw(),
shelling_accuracy = self._equipment:shelling_accuracy(),
torpedo_accuracy = self._equipment:torpedo_accuracy(),
evasion = self._equipment:evasion(),
los = self._equipment:los(),
speed = Formatting:format_speed(self._equipment:speed()),
luck = self._equipment:luck(),
range = Formatting:format_range(self._equipment:range()),
special = self._equipment:special(),
}
end
function EquipmentInfoKai:scrap()
self._vars.scrap = Formatting:format_resources(self._equipment:scrap())
end
function EquipmentInfoKai:image()
local card = EquipmentCardKai{equipment = self._equipment}
if card == false then
card = self._empty_card
end
local card_name = self._equipment:card_name()
if card_name then
local card_caption = {}
local card_local = self._equipment:card_localized_name()
if card_local then
table.insert(card_caption, Formatting:format_stat_with_max(card_name, card_local))
else
table.insert(card_caption, card_name)
end
table.insert(card_caption, "/")
table.insert(card_caption, Formatting:format_stat_with_max(self._equipment:card_japanese_name(), self._equipment:card_reading()))
return Formatting:format_image{card,
caption = table.concat(card_caption)
}
end
self._vars.card = Formatting:format_image{card}
end
function EquipmentInfoKai:compatibility_details()
local result = {}
for index, ship_type in ipairs(self._shown_ship_types) do
if index % 2 == 1 then
table.insert(result, self._row_starter)
end
local compatibility, note = self._equipment:equippable(ship_type)
local ship_label = Formatting:format_ship_type(ship_type)
if note then
ship_label = Formatting:tooltip(ship_label, note)
end
table.insert(result, format{self._compatibility_cell, bg_color = Formatting:format_equipment_compatibility(compatibility), label = ship_label})
end
return table.concat(result, "\n")
end
function EquipmentInfoKai:create_item()
if self._args.name then
self._equipment = Equipment(self._args.name, self._args.model)
else
self._equipment = Equipment(self._args[1])
end
end
function EquipmentInfoKai:get_module()
self._equipment_data_module = Equipment:get_module(self._args.name or self._args[1])
end
function EquipmentInfoKai:create_infobox_prep()
local table_classes = {"typography-xl-optout", "infobox"}
if self._args.classes then
table.insert(table_classes, self._args.classes)
end
local collapsible = self._args.collapsible
if collapsible then
table.insert(table_classes, "mw-collapsible")
table.insert(table_classes, "mw-collapsed")
end
self._vars.table_class = table.concat(table_classes, " ")
self._vars.table_id = collapsible and collapsible ~= "true" and ("mw-customcollapsible-" .. collapsible) or ""
self._vars.float = self._args.float or "none"
end
function EquipmentInfoKai:format_template()
for _, field in ipairs(self._fields) do
self[field](self)
end
return format(self._template, self._vars)
end
function EquipmentInfoKai:add_fields()
return
end
function EquipmentInfoKai:create_infobox()
self:add_fields()
self:create_item()
self:get_module()
self:create_infobox_prep()
return self:format_template()
end
return EquipmentInfoKai