Line 1: |
Line 1: |
| + | local BaseTable = require('Module:BaseTable') |
| local Ship = require('Module:Ship') | | local Ship = require('Module:Ship') |
| + | local ShipCardKai = require('Module:ShipCardKai') |
| local Equipment = require('Module:Equipment') | | local Equipment = require('Module:Equipment') |
| local Formatting = require('Module:Formatting') | | local Formatting = require('Module:Formatting') |
| local format = require('Module:StringInterpolation').format | | local format = require('Module:StringInterpolation').format |
| | | |
− | local NanaminFleet = { | + | local NanaminFleet = BaseTable{ |
− | _template = [[{| class="wikitable" | + | _item_class = Ship, |
− | | style="background: lightskyblue;" |Ship | + | _equip_class = Equipment, |
− | | style="background: lightskyblue;" |Equipment | + | _equip_bg = "whitesmoke", |
− | | style="background: lightskyblue;" |Ship | + | _header_template = [[! style="background-color: lightskyblue;" |Ship |
− | | style="background: lightskyblue;" |Equipment | + | ! style="background-color: lightskyblue;" |Equipment |
− | |- | + | ! style="background-color: lightskyblue;" |Ship |
− | | rowspan="4" style="background: whitesmoke;" |${ship_card1} | + | ! style="background-color: lightskyblue;" |Equipment]], |
− | ${ship_equips1}
| + | --[=[ |
− | | rowspan="4" style="background: whitesmoke;" |${ship_card4}
| + | _column_cell_templates = { |
− | ${ship_equips4}
| + | ship = [[| rowspan="4" style="background: whitesmoke;" |${values.ship_card}]], |
− | |-
| + | equips = [[| style="background: whitesmoke;" |${values.equips}]] |
− | | rowspan="4" style="background: whitesmoke;" |${ship_card2}
| + | }, |
− | ${ship_equips2} | + | --]=] |
− | | rowspan="4" style="background: whitesmoke;" |${ship_card5} | + | _columns = { |
− | ${ship_equips5} | + | "ship", |
− | |-
| + | "equips", |
− | | rowspan="4" style="background: whitesmoke;" |${ship_card3}
| + | "ship2", |
− | ${ship_equips3}
| + | "equips2" |
− | | rowspan="4" style="background: whitesmoke;" |${ship_card6}
| + | }, |
− | ${ship_equips6} | + | _blank = "blank.png", |
− | |}]],
| + | _default_size = ShipCardKai._card_size |
− | _slot_template = [[|- | |
− | | style="background: whitesmoke;" |${icon} ${equip}
| |
− | | style="background: whitesmoke;" |${plane_count}]] | |
| } | | } |
| | | |
− | function NanaminFleet:ship_card(ship) | + | function NanaminFleet:create_table_prep() |
− | if not ship then | + | self._size = self._args.image_size or self._default_size |
− | return Formatting:format_image{"Catbomb.png"} | + | end |
| + | |
| + | function NanaminFleet:ship(row) |
| + | if ship == false then |
| + | value = Formatting:format_image{self._blank, size = self._size} |
| + | else |
| + | value = ShipCardKai:card{ship = ship, size = self._size, link = ship:link(), caption = ship:name()} |
| + | end |
| + | return {values = {ship_card = value}, bg_color = self._transparent, text_align = self._center_align} |
| + | end |
| + | |
| + | function NanaminFleet:ship2(row) |
| + | return self:ship(row) |
| + | end |
| + | |
| + | function NanaminFleet:equips(row) |
| + | value = "|-|Lol|-|Lol2|-|Lol3|-|Lol4" |
| + | return {values = {equips = value}, bg_color = self._equip_bg, text_align = self._center_align} |
| + | end |
| + | |
| + | function NanaminFleet:equips2(row) |
| + | return self:equips(row) |
| + | end |
| + | |
| + | function NanaminFleet:start_rows() |
| + | self._rows = {} |
| + | end |
| + | |
| + | function NanaminFleet:finish_rows() |
| + | return |
| + | 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 |
− | return Formatting:format_image{ship:card()}
| |
| end | | end |
| | | |
− | function NanaminFleet:slot_equipment(ship) | + | function NanaminFleet:create_items() |
− | local slots = {} | + | local count = 0 |
− | local ship_slot_count = ship.card ~= "function" and 0 or ship:slots() | + | local row = {} |
− |
| + | for index, item_key in ipairs(self._args) do |
− | for i = 1, 4 do
| + | count = count + 1 |
− | local equip, plane_count, icon, equip_type | + | local item |
− | if ship.card == "function" or i > ship_slot_count then | + | if item_key == "-" then |
− | equip, plane_count, icon, equip_type = "- Locked -", "-", 0, false | + | item = false |
| else | | else |
− | equip, plane_count = ship:slot(i) | + | if mw.ustring.find(item_key, '/') then |
− | equip = Equipment:create(ship.equip[i].name)
| + | item = self._item_class(self:process_item_key(item_key)) |
− | if equip then
| |
− | icon = equip:icon() | |
− | equip_type = false
| |
− | equip = Formatting:format_link(equip:link())
| |
| else | | else |
− | icon = false | + | item = self._equip_class(self:process_item_key(item_key)) |
− | equip_type = false
| |
− | equip = "- Unequipped -"
| |
− | plane_count = 0
| |
| end | | end |
− | icon = Formatting:format_image{Formatting:format_equipment_icon(icon), caption = Formatting:format_equipment_type(equip_type)}
| |
| end | | end |
− | table.insert(slots, format{self._slot_template, | + | if count % 5 == 0 then |
− | icon = icon, | + | table.insert(self._items, row) |
− | equip = equip,
| + | row = {} |
− | plane_count = plane_count
| + | end |
− | }) | |
| end | | end |
− | return table.concat(slots)
| |
| end | | end |
| | | |
− | function NanaminFleet:create_table(args) | + | function NanaminFleet:create_data_rows() |
− | local ships = {} | + | for _, item in ipairs(self._items) do |
− | local vars = {}
| + | local row_values = {} |
− | for i = 1, 6 do
| + | for _, column in ipairs(self._columns) do |
− | ships[i] = {}
| + | row_values[column] = self[column](self, item) |
− | ships[i].object = Ship("Haruna", "Kai Ni")
| + | row_values[column].rowspan = item.class ~= nil and 4 or 1 |
− |
| + | row_values[column].colspan = 1 |
− | --Get the equips categorized under each ship specifically so the ship number doesn't have to be passed.
| |
− | ships[i].equip = {}
| |
− | for a = 1, 4 do
| |
− | ships[i].equip[a] = { name = "35.6cm Twin Gun Mount" } | |
| end | | end |
− |
| |
− | vars["ship_card" .. i] = self:ship_card(ships[i].object)
| |
− | vars["ship_equips" .. i] = self:slot_equipment(ships[i].object)
| |
| end | | end |
− |
| |
− | return format(self._template, vars)
| |
| end | | end |
| | | |
| return NanaminFleet | | return NanaminFleet |