Line 1: |
Line 1: |
| local BaseTable = require('Module:BaseTable') | | local BaseTable = require('Module:BaseTable') |
| local Formatting = require('Module:Formatting') | | local Formatting = require('Module:Formatting') |
− | local ResourceIcons = require('Module:ResourceIcons') | + | local ResourceIcons = require('Module:Data/Asset') |
| local Ship = require('Module:Ship') | | local Ship = require('Module:Ship') |
| | | |
− | local format = require('Module:StringInterpolation').format | + | local format = require('Module:Core').format |
| | | |
| local ShipRemodelListKai = BaseTable{ | | local ShipRemodelListKai = BaseTable{ |
− | _header_template = [[! colspan=5 | Before Remodel | + | _header_template = [[! colspan=6 | Before Remodel |
| ! rowspan=2 style="width:30px;" | ⇒ | | ! rowspan=2 style="width:30px;" | ⇒ |
| ! colspan=3 | After Remodel | | ! colspan=3 | After Remodel |
− | ! colspan=2 | Required Resources | + | ! colspan=3 | Required Resources |
| |- | | |- |
| ! style="width: 50px;" | No. | | ! style="width: 50px;" | No. |
Line 17: |
Line 17: |
| ! style="width: 30px;" | Level | | ! style="width: 30px;" | Level |
| ! style="width: 30px;" | ${blueprint} | | ! style="width: 30px;" | ${blueprint} |
| + | ! style="width: 30px;" | ${catapult} |
| ! style="width: 50px;" | No. | | ! style="width: 50px;" | No. |
| ! style="width: 100px;" | Name | | ! style="width: 100px;" | Name |
| ! style="width: 30px;" | Type | | ! style="width: 30px;" | Type |
− | ! style="width: 30px; text-align: center; vertical-align: middle; background-color: forestgreen;" | ${fuel} | + | ! style="width: 30px; text-align: center; vertical-align: middle; background-color: darkgoldenrod;" | ${ammo} |
− | ! style="width: 30px; text-align: center; vertical-align: middle; background-color: darkgoldenrod;" | ${ammo}]], | + | ! style="width: 30px; text-align: center; vertical-align: middle; background-color: lightgrey;" | ${steel} |
| + | ! style="width: 30px;" | ${devmat}]], |
| _header_template_bottom = [[! style="width: 50px;" | No. | | _header_template_bottom = [[! style="width: 50px;" | No. |
| ! style="width: 100px;" | Name | | ! style="width: 100px;" | Name |
Line 27: |
Line 29: |
| ! style="width: 30px;" | Level | | ! style="width: 30px;" | Level |
| ! style="width: 30px;" | ${blueprint} | | ! style="width: 30px;" | ${blueprint} |
| + | ! style="width: 30px;" | ${catapult} |
| ! rowspan=2 style="width:30px;" | ⇒ | | ! rowspan=2 style="width:30px;" | ⇒ |
| ! style="width: 50px;" | No. | | ! style="width: 50px;" | No. |
| ! style="width: 100px;" | Name | | ! style="width: 100px;" | Name |
| ! style="width: 30px;" | Type | | ! style="width: 30px;" | Type |
− | ! style="width: 30px; text-align: center; vertical-align: middle; background-color: forestgreen;" | ${fuel}
| |
| ! style="width: 30px; text-align: center; vertical-align: middle; background-color: darkgoldenrod;" | ${ammo} | | ! style="width: 30px; text-align: center; vertical-align: middle; background-color: darkgoldenrod;" | ${ammo} |
| + | ! style="width: 30px; text-align: center; vertical-align: middle; background-color: lightgrey;" | ${steel} |
| + | ! style="width: 30px;" | ${devmat} |
| |- | | |- |
− | ! colspan=5 | Before Remodel | + | ! colspan=6 | Before Remodel |
| ! colspan=3 | After Remodel | | ! colspan=3 | After Remodel |
− | ! colspan=2 | Required Resources]], | + | ! colspan=3 | Required Resources]], |
| _columns = { | | _columns = { |
| "id", | | "id", |
Line 43: |
Line 47: |
| "remodel_level", | | "remodel_level", |
| "remodel_blueprint", | | "remodel_blueprint", |
| + | "remodel_catapult", |
| "arrow", | | "arrow", |
| "id_after", | | "id_after", |
Line 49: |
Line 54: |
| "ammo", | | "ammo", |
| "steel", | | "steel", |
| + | "devmat", |
| }, | | }, |
| _empty_cell = [[| style="text-align: center; vertical-align: middle;" | -]], | | _empty_cell = [[| style="text-align: center; vertical-align: middle;" | -]], |
Line 58: |
Line 64: |
| _arrow = "⇒", | | _arrow = "⇒", |
| _question_marks = "??", | | _question_marks = "??", |
| + | _fragment_prefix = "shipremodellistkai", |
| } | | } |
| | | |
Line 69: |
Line 76: |
| | | |
| function ShipRemodelListKai:name(ship) | | function ShipRemodelListKai:name(ship) |
− | return {values = {value = tostring(mw.html.create('span'):attr('id', "shipremodellistkai-" .. tostring(ship:api_id() or mw.ustring.lower(mw.ustring.gsub(text, "%s+")))):wikitext(Formatting:format_link(ship:link())))}, bg_color = self._transparent, text_align = self._center_align} | + | return {values = {value = Formatting:id_span(tostring(ship:api_id() or mw.ustring.lower(mw.ustring.gsub(ship:name(), "%s+", self._dash))), self._fragment_prefix, Formatting:format_link(ship:link()))}, bg_color = self._transparent, text_align = self._center_align} |
| end | | end |
| | | |
Line 80: |
Line 87: |
| local remodel_level = false | | local remodel_level = false |
| if self._remodel_to then | | if self._remodel_to then |
| + | if self._remodel_to == ship:remodel_from() then |
| + | self._remodel_is_reversion = true |
| + | else |
| + | self._remodel_is_reversion = false |
| + | end |
| self._remodel_to = Ship(self._remodel_to) | | self._remodel_to = Ship(self._remodel_to) |
− | remodel_level = self._remodel_to:remodel_level() | + | if self._remodel_is_reversion then |
| + | remodel_level = ship:remodel_to_level() |
| + | else |
| + | remodel_level = self._remodel_to:remodel_level() |
| + | end |
| end | | end |
| return {values = {value = remodel_level == false and self._dash or Formatting:format_stat(remodel_level)}, bg_color = self._transparent, text_align = self._center_align} | | return {values = {value = remodel_level == false and self._dash or Formatting:format_stat(remodel_level)}, bg_color = self._transparent, text_align = self._center_align} |
| end | | end |
| | | |
− | function ShipRemodelListKai:remodel_blueprint() | + | function ShipRemodelListKai:remodel_blueprint(ship) |
| local value = self._dash | | local value = self._dash |
| if self._remodel_to then | | if self._remodel_to then |
− | value = Formatting:format_blueprint_requirement_simple(self._remodel_to:remodel_blueprint(), true) | + | if self._remodel_is_reversion then |
| + | value = Formatting:format_blueprint_requirement(ship:remodel_to_blueprint(), true) |
| + | else |
| + | value = Formatting:format_blueprint_requirement(self._remodel_to:remodel_blueprint(), true) |
| + | end |
| + | elseif self._remodel_to == nil then |
| + | value = self._question_marks |
| + | end |
| + | return {values = {value = value}, bg_color = self._transparent, text_align = self._center_align} |
| + | end |
| + | |
| + | function ShipRemodelListKai:remodel_catapult(ship) |
| + | local value = self._dash |
| + | if self._remodel_to then |
| + | if self._remodel_is_reversion then |
| + | value = Formatting:format_catapult_requirement(ship:remodel_to_catapult(), true) |
| + | else |
| + | value = Formatting:format_catapult_requirement(self._remodel_to:remodel_catapult(), true) |
| + | end |
| elseif self._remodel_to == nil then | | elseif self._remodel_to == nil then |
| value = self._question_marks | | value = self._question_marks |
Line 115: |
Line 149: |
| local name_after = self._remodel_to == nil and self._question_marks or self._dash | | local name_after = self._remodel_to == nil and self._question_marks or self._dash |
| if self._remodel_to then | | if self._remodel_to then |
− | local text = select(2, self._remodel_to:link())
| + | name_after = Formatting:fragment_link(tostring(self._remodel_to:api_id() or mw.ustring.lower(mw.ustring.gsub(self._remodel_to:name(), "%s+", self._dash))), self._fragment_prefix, self._remodel_to:name()) |
− | name_after = Formatting:format_link(link, text, "shipremodellistkai-" .. tostring(self._remodel_to:api_id() or mw.ustring.lower(mw.ustring.gsub(text, "%s+")))) | |
| end | | end |
| return {values = {value = name_after}, bg_color = self._transparent, text_align = self._center_align} | | return {values = {value = name_after}, bg_color = self._transparent, text_align = self._center_align} |
Line 129: |
Line 162: |
| end | | end |
| | | |
− | function ShipRemodelListKai:ammo() | + | function ShipRemodelListKai:ammo(ship) |
| local ammo = self._remodel_to == nil and self._question_marks or self._dash | | local ammo = self._remodel_to == nil and self._question_marks or self._dash |
| if self._remodel_to then | | if self._remodel_to then |
− | ammo = Formatting:format_ship_code(self._remodel_to:remodel_cost().ammo) | + | if self._remodel_is_reversion then |
| + | ammo = ship:remodel_to_cost().ammo |
| + | else |
| + | ammo = self._remodel_to:remodel_cost().ammo |
| + | end |
| end | | end |
− | return {values = {value = ammo}, bg_color = self._transparent, text_align = self._center_align} | + | return {values = {value = ammo or self._dash}, bg_color = self._transparent, text_align = self._center_align} |
| end | | end |
| | | |
− | function ShipRemodelListKai:steel() | + | function ShipRemodelListKai:steel(ship) |
| local steel = self._remodel_to == nil and self._question_marks or self._dash | | local steel = self._remodel_to == nil and self._question_marks or self._dash |
| if self._remodel_to then | | if self._remodel_to then |
− | steel = Formatting:format_ship_code(self._remodel_to:remodel_cost().steel) | + | if self._remodel_is_reversion then |
| + | steel = ship:remodel_to_cost().steel |
| + | else |
| + | steel = self._remodel_to:remodel_cost().steel |
| + | end |
| + | end |
| + | return {values = {value = steel or self._dash}, bg_color = self._transparent, text_align = self._center_align} |
| + | end |
| + | |
| + | function ShipRemodelListKai:devmat(ship) |
| + | local devmat = self._remodel_to == nil and self._question_marks or self._dash |
| + | if self._remodel_to then |
| + | if self._remodel_is_reversion then |
| + | devmat = ship:remodel_to_cost().devmat |
| + | else |
| + | devmat = self._remodel_to:remodel_cost().devmat |
| + | end |
| end | | end |
− | return {values = {value = steel}, bg_color = self._transparent, text_align = self._center_align} | + | return {values = {value = devmat or self._dash}, bg_color = self._transparent, text_align = self._center_align} |
| end | | end |
| | | |
Line 152: |
Line 205: |
| local header_icons = { | | local header_icons = { |
| blueprint = ResourceIcons.blueprint, | | blueprint = ResourceIcons.blueprint, |
− | fuel = ResourceIcons.fuel, | + | catapult = ResourceIcons.prototype_deck_catapult_item, |
| ammo = ResourceIcons.ammo, | | ammo = ResourceIcons.ammo, |
| + | steel = ResourceIcons.steel, |
| + | devmat = ResourceIcons.devmat, |
| } | | } |
| for key, value in pairs(header_icons) do | | for key, value in pairs(header_icons) do |
− | header_icons[key] = Formatting:format_image{value, caption = Formatting:format_resource_name(key), size = key == "blueprint" and "x18px" or nil} | + | header_icons[key] = Formatting:format_image{value, caption = Formatting:format_resource_name(key), size = (key == "blueprint" or key == "catapult") and "24px" or nil} |
| end | | end |
| self._header = format(self._header_template, header_icons) | | self._header = format(self._header_template, header_icons) |