- 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:NodeInfo"
Jump to navigation
Jump to search
(Created page with "local BaseTable = require("Module:BaseTable") local NodeInfo = { }") |
m |
||
Line 1: | Line 1: | ||
local BaseTable = require("Module:BaseTable") | local BaseTable = require("Module:BaseTable") | ||
+ | local Formatting = require('Module:Formatting') | ||
+ | local EnemyShip = require("Module:EnemyShip") | ||
− | local NodeInfo = { | + | local format = require('Module:StringInterpolation').format |
− | + | ||
− | } | + | local NodeInfo = BaseTable({ |
+ | _item_class = EnemyShip, | ||
+ | _header_template = nil, | ||
+ | _column_cell_templates = { | ||
+ | node = [[| colspan="${colspan}" rowspan="${rowspan}" style="text-align: center; background-color: ${bg_color};" |${values.node} ${values.time}]], | ||
+ | formation = [[| style="background-color: ${bg_color}" |${values.formation}]], | ||
+ | fleet = [[| style="background-color: ${bg_color}" |${values.fleet}]], | ||
+ | as = [[| style="text-align: center; background-color: ${bg_color}" |${values.as}]], | ||
+ | }, | ||
+ | _column_bg_colors = { | ||
+ | node = "transparent", | ||
+ | formation = "transparent", | ||
+ | fleet = "transparent", | ||
+ | as = "transparent", | ||
+ | }, | ||
+ | _columns = { | ||
+ | "node", | ||
+ | "formation", | ||
+ | "fleet", | ||
+ | "as", | ||
+ | }, | ||
+ | _day_battle_color = "yellow", | ||
+ | _night_battle_color = "purple", | ||
+ | }) | ||
+ | |||
+ | function NodeInfo:node(row) | ||
+ | return { values = { node = row.node, time = row.time }, bg_color = self._column_bg_colors.node } | ||
+ | end | ||
+ | |||
+ | function NodeInfo:formation(row) | ||
+ | return { values = { formation = row.formation }, bg_color = self._column_bg_colors.formation } | ||
+ | end | ||
+ | |||
+ | function NodeInfo:fleet(row) | ||
+ | return { values = { formation = row.fleet }, bg_color = self._column_bg_colors.fleet } | ||
+ | end | ||
+ | |||
+ | function NodeInfo:as(row) | ||
+ | return { values = { formation = row.fleet }, bg_color = self._column_bg_colors.as } | ||
+ | end | ||
+ | |||
+ | function NodeInfo:process_node(item) | ||
+ | local split = mw.ustring.find(item, '/') | ||
+ | local node, time | ||
+ | if split then | ||
+ | node = mw.ustring.sub(item, 1, split - 1) | ||
+ | time = "(" .. mw.ustring.sub(item, split + 1):gsub("^%l", string.upper) .. ")" | ||
+ | else | ||
+ | node = item:upper() | ||
+ | time = "" | ||
+ | end | ||
+ | return node, time | ||
+ | end | ||
+ | |||
+ | function NodeInfo:create_items() | ||
+ | local mode = 1 | ||
+ | local fleet = "" | ||
+ | for index, item_key in ipairs(self._args) do | ||
+ | if item_key == "-" then | ||
+ | table.insert(self._items, { fleet = fleet }) | ||
+ | table.insert(self._items, "break") | ||
+ | fleet = "" | ||
+ | mode = 1 | ||
+ | else | ||
+ | --Each item will be just a string, so we need to check for one of the _columns, which will be done by mode | ||
+ | if mode == 1 then | ||
+ | --First item should always be the node | ||
+ | --Node format: !node/day|night where the second part is day -or- night; ! indicates a boss node | ||
+ | local boss = false | ||
+ | if mw.ustring.sub(item_key, 1, 1) == "!" then | ||
+ | boss = true | ||
+ | item_key = mw.ustring.sub(item_key, 2) | ||
+ | end | ||
+ | |||
+ | local node, time = self:process_node(item_key) | ||
+ | |||
+ | table.insert(self._items, { node = node, time = time, boss = boss }) | ||
+ | mode = 2 | ||
+ | elseif mode == 2 then | ||
+ | local formation_image = item_key:gsub("%s", "") .. ".jpg" | ||
+ | table.insert(self._items, { values = { formation = Formatting.format_image{formation_image, caption = item_key} } }) | ||
+ | mode = 3 | ||
+ | else | ||
+ | --Fleets are of variable size, so we append onto a string until we hit the next node declaration | ||
+ | local split = mw.ustring.find(item_key, '/') | ||
+ | local ship_name = mw.ustring.sub(item_key, 1, split - 1) | ||
+ | local ship_suffix = mw.ustring.sub(item_key, split + 1) | ||
+ | local ship = EnemyShip(ship_name, ship_suffix) | ||
+ | |||
+ | fleet = fleet .. Formatting.format_image{ship:battle_card(), ship:name()} | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | |||
+ | NodeInfo.create_data_rows = NodeInfo.create_data_rows_merge_vertical | ||
+ | |||
+ | return NodeInfo |
Revision as of 09:47, 15 April 2015
Documentation for this module may be created at Module:NodeInfo/doc
local BaseTable = require("Module:BaseTable")
local Formatting = require('Module:Formatting')
local EnemyShip = require("Module:EnemyShip")
local format = require('Module:StringInterpolation').format
local NodeInfo = BaseTable({
_item_class = EnemyShip,
_header_template = nil,
_column_cell_templates = {
node = [[| colspan="${colspan}" rowspan="${rowspan}" style="text-align: center; background-color: ${bg_color};" |${values.node} ${values.time}]],
formation = [[| style="background-color: ${bg_color}" |${values.formation}]],
fleet = [[| style="background-color: ${bg_color}" |${values.fleet}]],
as = [[| style="text-align: center; background-color: ${bg_color}" |${values.as}]],
},
_column_bg_colors = {
node = "transparent",
formation = "transparent",
fleet = "transparent",
as = "transparent",
},
_columns = {
"node",
"formation",
"fleet",
"as",
},
_day_battle_color = "yellow",
_night_battle_color = "purple",
})
function NodeInfo:node(row)
return { values = { node = row.node, time = row.time }, bg_color = self._column_bg_colors.node }
end
function NodeInfo:formation(row)
return { values = { formation = row.formation }, bg_color = self._column_bg_colors.formation }
end
function NodeInfo:fleet(row)
return { values = { formation = row.fleet }, bg_color = self._column_bg_colors.fleet }
end
function NodeInfo:as(row)
return { values = { formation = row.fleet }, bg_color = self._column_bg_colors.as }
end
function NodeInfo:process_node(item)
local split = mw.ustring.find(item, '/')
local node, time
if split then
node = mw.ustring.sub(item, 1, split - 1)
time = "(" .. mw.ustring.sub(item, split + 1):gsub("^%l", string.upper) .. ")"
else
node = item:upper()
time = ""
end
return node, time
end
function NodeInfo:create_items()
local mode = 1
local fleet = ""
for index, item_key in ipairs(self._args) do
if item_key == "-" then
table.insert(self._items, { fleet = fleet })
table.insert(self._items, "break")
fleet = ""
mode = 1
else
--Each item will be just a string, so we need to check for one of the _columns, which will be done by mode
if mode == 1 then
--First item should always be the node
--Node format: !node/day|night where the second part is day -or- night; ! indicates a boss node
local boss = false
if mw.ustring.sub(item_key, 1, 1) == "!" then
boss = true
item_key = mw.ustring.sub(item_key, 2)
end
local node, time = self:process_node(item_key)
table.insert(self._items, { node = node, time = time, boss = boss })
mode = 2
elseif mode == 2 then
local formation_image = item_key:gsub("%s", "") .. ".jpg"
table.insert(self._items, { values = { formation = Formatting.format_image{formation_image, caption = item_key} } })
mode = 3
else
--Fleets are of variable size, so we append onto a string until we hit the next node declaration
local split = mw.ustring.find(item_key, '/')
local ship_name = mw.ustring.sub(item_key, 1, split - 1)
local ship_suffix = mw.ustring.sub(item_key, split + 1)
local ship = EnemyShip(ship_name, ship_suffix)
fleet = fleet .. Formatting.format_image{ship:battle_card(), ship:name()}
end
end
end
end
NodeInfo.create_data_rows = NodeInfo.create_data_rows_merge_vertical
return NodeInfo