Module:NanaminFleet

local BaseTable = require('Module:BaseTable') local Ship = require('Module:Ship') local ShipCardKai = require('Module:ShipCardKai') local Equipment = require('Module:Equipment') local Formatting = require('Module:Formatting') local format = require('Module:StringInterpolation').format

local NanaminFleet = BaseTable({   _item_class = Ship,    _equip_class = Equipment,    _equip_bg = "whitesmoke",    _header_template = nil,    _column_cell_templates = {        ship = ${values.ship_card},        equips = ${values.equip_icon}        | style="background: whitesmoke; width: 175px; font-size: 5px; text-align: center;" |${values.equip_link},        ship2 = ${values.ship_card},        equips2 = ${values.equip_icon}        | style="background: whitesmoke; width: 175px; font-size: 5px; text-align: center;" |${values.equip_link}    },    _columns = {        "ship",        "equips",        "ship2",        "equips2"    },    _blank = "Empty_ship_slot.png",    _default_size = "120x165px" })

function NanaminFleet:create_table_prep self._size = self._args.image_size or self._default_size end

function NanaminFleet:ship(row) local value if row[1] == nil or row[1] == "break" then return false elseif row[1] == false then value = Formatting:format_image{self._blank, size = self._size} else value = ShipCardKai:card{ship = row[1], size = self._size, link = row[1]:link, caption = row[1]:name} end return {values = {ship_card = value}, bg_color = self._transparent, text_align = self._center_align} end

function NanaminFleet:ship2(row) row = {row[3], row[4]} return self:ship(row) end

function NanaminFleet:equips(row) local value, icon if row[2] == false then value = "- Unequipped -" icon = "" else value = Formatting:format_link(row[2]:link) icon = Formatting:format_image{Formatting:format_equipment_icon(row[2]:icon), size = "22x22px"} end return {values = {equip_link = value, equip_icon = icon}, bg_color = self._equip_bg, text_align = self._center_align} end

function NanaminFleet:equips2(row) row = {row[3], row[4]} return self:equips(row) end

function NanaminFleet:process_item_key(item_key) local split = mw.ustring.find(item_key, '/') if split == nil then return item_key else ship_name = mw.ustring.sub(item_key, 1, split - 1) ship_suffix = mw.ustring.sub(item_key, split + 1, -1) if ship_suffix == "Regular" then ship_suffix = nil end return ship_name, ship_suffix end end

function NanaminFleet:create_items local row1, row2, row3, row4 = {}, {}, {}, {} for index, item_key in ipairs(self._args) do       local item if item_key == "-" then item = false else if mw.ustring.find(item_key, '/') then item = self._item_class(self:process_item_key(item_key)) else item = self._equip_class(self:process_item_key(item_key)) end end local row_number = {1, 1, 2, 3, 4, 1, 1, 2, 3, 4} if row_number[index % 10] == 1 then table.insert(row1, item) elseif row_number[index % 10] == 2 then table.insert(row2, "break") table.insert(row2, item) elseif row_number[index % 10] == 3 then table.insert(row3, "break") table.insert(row3, item) else table.insert(row4, "break") table.insert(row4, item) end if index % 10 == 0 then table.insert(self._items, row1) table.insert(self._items, row2) table.insert(self._items, row3) table.insert(self._items, row4) row1, row2, row3, row4 = {}, {}, {}, {} end end end

function NanaminFleet:create_data_rows for _, item in ipairs(self._items) do       local row_values = {} for _, column in ipairs(self._columns) do           local value = self[column](self, item) if value then row_values[column] = value row_values[column].rowspan = item.class ~= nil and 4 or 1 row_values[column].colspan = 1 end end table.insert(self._data_rows, row_values) end end

return NanaminFleet