- Welcome to the Kancolle Wiki!
- If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord
Module:EnemyShipInfoMini
Jump to navigation
Jump to search
Documentation for this module may be created at Module:EnemyShipInfoMini/doc
local Formatting = require('Module:Formatting')
local ShipInfoKai = require('Module:ShipInfoKai')
local ShipCapabilities = require('Module:ShipCapabilities')
local EnemyShip = require('Module:EnemyShip')
local EnemyShipInfoMini = ShipInfoKai{
_template = [[{|class="typography-xl-optout ${table_class}" style="margin: auto; float: none; border: 1px solid darkgray; width: 160px;"
|-
! colspan="4" style="height: 80px;" | ${name}<br />${japanese_name}
|-
! colspan="4" style="background-color: LightSkyBlue;" | Statistics
|- style="background-color: whitesmoke;"
| style="text-align: center;" | ${icons.hp}
| style="text-align: center;" | ${hp}
| style="text-align: center;" | ${icons.armor}
| style="text-align: center;" | ${armor}
|- style="background-color: whitesmoke;"
| style="text-align: center;" | ${icons.firepower}
| style="text-align: center;" | ${firepower}
| style="text-align: center;" | ${icons.torpedo}
| style="text-align: center;" | ${torpedo}
|- style="background-color: whitesmoke;"
| style="text-align: center;" | ${icons.asw}
| style="text-align: center;" | ${asw}
| style="text-align: center;" | ${icons.aa}
| style="text-align: center;" | ${aa}
|-
! colspan="4" style="background-color: LightSkyBlue;" | '''Equipment'''
|- style="background-color: whitesmoke;"
| colspan="4" style="text-align: center;" | ${slot_details}
|-
| colspan="4" style="padding: 0px;" |<div style="background-color: lightskyblue; cursor: pointer; text-align: center; margin: 0px;" class="mw-customtoggle-extra">'''Extra'''</div>
<div class="mw-collapsible mw-collapsed" id="mw-customcollapsible-extra" style="padding: 2px; font-size: 12px;">
<div style="display: ${opening_airstrike_display};">Airstrike (${opening_airstrike})</div>
<div>${day_battle}</div>
<div style="display: ${artillery_spotting_display};">${artillery_spotting}</div>
<div style="display: ${opening_torpedo_display};">Opening Salvo</div>
<div style="display: ${closing_torpedo_display};">Torpedo (${closing_torpedo})</div>
<div>ASW ${asw_attack}</div>
<div>NB ${night_battle}</div>
</div>
|}]],
_display_flex = "flex",
_display_none = "none",
}
function EnemyShipInfoMini:name()
local link, text, section = self._ship:link()
self._vars.name = Formatting:format_link(link, text, section)
end
function EnemyShipInfoMini:firepower()
self._vars.firepower = Formatting:format_stat(self._ship:firepower())
end
function EnemyShipInfoMini:armor()
self._vars.armor = Formatting:format_stat(self._ship:armor())
end
function EnemyShipInfoMini:torpedo()
self._vars.torpedo = Formatting:format_stat(self._ship:torpedo())
end
function EnemyShipInfoMini:aa()
self._vars.aa = Formatting:format_stat(self._ship:aa(), self._ship:aa())
end
function EnemyShipInfoMini:asw()
self._vars.asw = Formatting:format_stat(self._ship:asw(), self._ship:asw())
end
function EnemyShipInfoMini:add_fields()
table.insert(self._fields, "capabilities")
end
function EnemyShipInfoMini:capabilities()
local capabilities = ShipCapabilities{ship = self._ship}
local opening_airstrike = { capabilities:opening_airstrike() }
local opening_torpedo = { capabilities:opening_torpedo() }
local day_battle = { capabilities:day_battle() }
local artillery_spotting = { capabilities:artillery_spotting() }
local closing_torpedo = { capabilities:closing_torpedo() }
local asw_attack = { capabilities:asw_attack() }
local night_battle = { capabilities:night_battle() }
self._vars.opening_airstrike_display, self._vars.opening_airstrike = opening_airstrike[1] and self._display_flex or self._display_none, capabilities:format_opening_airstrike(unpack(opening_airstrike))
self._vars.opening_torpedo_display, self._vars.opening_torpedo = opening_torpedo[1] and self._display_flex or self._display_none, capabilities:format_opening_torpedo(unpack(opening_torpedo))
self._vars.day_battle = capabilities:format_day_battle(unpack(day_battle))
self._vars.artillery_spotting_display, self._vars.artillery_spotting = artillery_spotting[1] and self._display_flex or self._display_none, capabilities:format_artillery_spotting(unpack(artillery_spotting))
self._vars.closing_torpedo_display, self._vars.closing_torpedo = closing_torpedo[1] and self._display_flex or self._display_none, capabilities:format_closing_torpedo(unpack(closing_torpedo))
self._vars.asw_attack = capabilities:format_asw_attack(unpack(asw_attack))
self._vars.night_battle = capabilities:format_night_battle(unpack(night_battle))
end
function EnemyShipInfoMini:create_item()
if self._args.name then
self._ship = EnemyShip(self._args.name, self._args.model)
else
self._ship = EnemyShip(self._args[1])
end
end
function EnemyShipInfoMini:slot_details()
local slots = {}
for i = 1, self._default_slot_num do
local num_of_slots, num_of_enabled_slots = self._ship:slots_length(), self._ship:slots()
local locked = num_of_enabled_slots and i > num_of_enabled_slots
local icon = ""
if num_of_slots and i > num_of_slots then
else
local equipment, link = self._ship:slot(i), nil
if equipment then
icon = equipment:icon()
link = equipment:link()
else
icon = locked and "" or false
end
if icon ~= "" then
icon = Formatting:format_image{Formatting:format_equipment_icon(icon), caption = link, link = link}
end
end
table.insert(slots, icon)
end
self._vars.slot_details = table.concat(slots)
end
-- EnemyShipInfoMini.test = EnemyShipInfoMini:Infobox({"Destroyer I-Class"})
return EnemyShipInfoMini