Line 4: |
Line 4: |
| local BaseData = require("Module:BaseData") | | local BaseData = require("Module:BaseData") |
| local Ship = require("Module:Ship") | | local Ship = require("Module:Ship") |
| + | local ShipGraphicKai = require('Module:ShipGraphicKai') |
| | | |
| -- [[Category:Todo]]: support passing Ship object in those modules, use Ship object, redo and move ship_remodel_forms function | | -- [[Category:Todo]]: support passing Ship object in those modules, use Ship object, redo and move ship_remodel_forms function |
Line 13: |
Line 14: |
| local reversible_forms = {} | | local reversible_forms = {} |
| | | |
− | function ship_remodel_forms(ship_name, ship_suffix, j) | + | function ship_remodel_forms(ship_name, seasonal_forms, ship_suffix, j) |
| j = j or 1 | | j = j or 1 |
| ship_suffix = ship_suffix or "" | | ship_suffix = ship_suffix or "" |
Line 22: |
Line 23: |
| end | | end |
| local form_data = ship_data[ship_suffix] | | local form_data = ship_data[ship_suffix] |
| + | if seasonal_forms then |
| + | for suffix, data in pairs(ship_data) do |
| + | if data._seasonal == true and data._name and data._suffix then |
| + | table.insert(seasonal_forms, data._name .. "/" .. data._suffix) |
| + | end |
| + | end |
| + | end |
| local i = 0 | | local i = 0 |
| while form_data and form_data._remodel_to and not Utils.find(forms, form_data._remodel_to) and i < 10 and j <= 3 do | | while form_data and form_data._remodel_to and not Utils.find(forms, form_data._remodel_to) and i < 10 and j <= 3 do |
| local ship_name_next, ship_suffix_next = Ship:process_ship_key(form_data._remodel_to) | | local ship_name_next, ship_suffix_next = Ship:process_ship_key(form_data._remodel_to) |
| if ship_name_next ~= ship_name then | | if ship_name_next ~= ship_name then |
− | return Utils.concat(forms, ship_remodel_forms(ship_name_next, ship_suffix_next, j + 1)) | + | return Utils.concat(forms, ship_remodel_forms(ship_name_next, seasonal_forms, ship_suffix_next, j + 1)) |
| else | | else |
| table.insert(forms, form_data._remodel_to) | | table.insert(forms, form_data._remodel_to) |
Line 66: |
Line 74: |
| | | |
| _gallery_tabber = [[{{#tag:tabber| | | _gallery_tabber = [[{{#tag:tabber| |
− | {{!}}-{{!}}Normal={{ShipGraphicKai|${name}/${suffix}|link=nil|size=300px}} | + | {{!}}-{{!}}Normal=${image} |
− | {{!}}-{{!}}Damaged={{ShipGraphicKai|${name}/${suffix}|link=nil|damaged=true|size=300px}} | + | {{!}}-{{!}}Damaged=${image_damaged} |
| }}]], | | }}]], |
| | | |
Line 167: |
Line 175: |
| -- [[Category:Todo]]: | | -- [[Category:Todo]]: |
| -- Ignore forms with same base and/or damaged CG (requires updating for data modules) | | -- Ignore forms with same base and/or damaged CG (requires updating for data modules) |
− | -- Seasonal forms
| + | -- Improve performance by not using frame:preprocess? |
− | -- Improve performance by not using preprocess, ShipGraphicKai, etc. | |
| function ShipPage.GalleryTabber(frame, args) | | function ShipPage.GalleryTabber(frame, args) |
| args = args or Utils.getTemplateArgs(frame) | | args = args or Utils.getTemplateArgs(frame) |
| local ship_name = args.explicit.ship or args.implicit.pagename or "" | | local ship_name = args.explicit.ship or args.implicit.pagename or "" |
− | local forms = ship_remodel_forms(ship_name) | + | local seasonal_forms = {} |
| + | local forms = ship_remodel_forms(ship_name, seasonal_forms) |
| local result = { "{{#tag:tabber|" } | | local result = { "{{#tag:tabber|" } |
| for _, form in ipairs(forms) do | | for _, form in ipairs(forms) do |
− | local name, suffix = Ship:process_ship_key(form) | + | local image = ShipGraphicKai:Asset({ form, link = "nil", size = "300px" }) |
| + | local image_damaged = ShipGraphicKai:Asset({ form, link = "nil", damaged = true, size = "300px" }) |
| table.insert(result, suffix == "" and "{{!}}-{{!}}Base=" or ("{{!}}-{{!}}" .. suffix .. "=")) | | table.insert(result, suffix == "" and "{{!}}-{{!}}Base=" or ("{{!}}-{{!}}" .. suffix .. "=")) |
− | table.insert(result, format{ ShipPage._gallery_tabber, name = name, suffix = suffix }) | + | table.insert(result, format{ |
| + | ShipPage._gallery_tabber, |
| + | image = image, |
| + | image_damaged = image_damaged |
| + | }) |
| + | end |
| + | for _, form in ipairs(seasonal_forms) do |
| + | local image = ShipGraphicKai:Asset({ form, link = "nil", size = "300px" }) |
| + | local image_damaged = ShipGraphicKai:Asset({ form, link = "nil", damaged = true, size = "300px" }) |
| + | table.insert(result, "{{!}}-{{!}}" .. suffix .. "=") |
| + | table.insert(result, format{ |
| + | ShipPage._gallery_tabber, |
| + | image = image, |
| + | image_damaged = image_damaged |
| + | }) |
| end | | end |
| table.insert(result, "}}") | | table.insert(result, "}}") |