Line 1: |
Line 1: |
− | local U = require("Module:Utils") | + | local U = require("Module:Core") |
− | local format = require("Module:Utils").format | + | local format = require("Module:Core").format |
| local Formatting = require("Module:Formatting") | | local Formatting = require("Module:Formatting") |
| local BaseData = require("Module:BaseData") | | local BaseData = require("Module:BaseData") |
Line 18: |
Line 18: |
| ship_suffix = ship_suffix or "" | | ship_suffix = ship_suffix or "" |
| local forms = { ship_name .. "/" .. ship_suffix } | | local forms = { ship_name .. "/" .. ship_suffix } |
− | local success, ship_data = U.requireModule(ship_name) | + | local success, ship_data = Ship.requireModule(ship_name) |
| if not success then | | if not success then |
| return forms | | return forms |
Line 39: |
Line 39: |
| form_data = ship_data[ship_suffix_next] | | form_data = ship_data[ship_suffix_next] |
| if form_data._remodel_to_level then | | if form_data._remodel_to_level then |
− | reversible_forms[form_data._name .. "/" .. (form_data._suffix or "")] = true | + | reversible_forms[form_data._name .. "/" .. (form_data._suffix or "")] = form_data._remodel_to |
| end | | end |
| end | | end |
Line 114: |
Line 114: |
| if basepagename == "Sandbox" then | | if basepagename == "Sandbox" then |
| override = { _page = "Sandbox/" .. self._vars.ship_name } | | override = { _page = "Sandbox/" .. self._vars.ship_name } |
| + | end |
| + | local reverse_form_suffix |
| + | if reversible_forms[form] then |
| + | local lua_huh, reverse_form_suffix_ = Ship:process_ship_key(reversible_forms[form]) |
| + | reverse_form_suffix = reverse_form_suffix_ |
| end | | end |
| table.insert(infoboxes, format{ | | table.insert(infoboxes, format{ |
| self._ship_infobox, | | self._ship_infobox, |
− | title = (self._ship_infobox_titles[i] or "?") .. (reversible_forms[form] and " (Reversible)" or ""), | + | title = (self._ship_infobox_titles[i] or "?") .. |
| + | (reverse_form_suffix and string.format(" (Reversible to %s)", reverse_form_suffix) or ""), |
| infobox = ShipInfoKai:Infobox({ form, override = override }) | | infobox = ShipInfoKai:Infobox({ form, override = override }) |
| }) | | }) |
Line 129: |
Line 135: |
| | | |
| function ShipPage:format_notice(basepagename) | | function ShipPage:format_notice(basepagename) |
− | self._vars.notice = basepagename == "Sandbox" and self._sandbox_notice or Ship(basepagename):type() == 2 and self._dd_notice or "" | + | self._vars.notice = basepagename == "Sandbox" and self._sandbox_notice or "" -- Ship(basepagename):type() == 2 and self._dd_notice or "" |
| end | | end |
| | | |
Line 151: |
Line 157: |
| end | | end |
| | | |
− | function ShipPage.FooterLinks(frame) | + | function ShipPage.FooterLinks(args) |
− | local args = U.getTemplateArgs(frame)
| |
| local basepagename = args.implicit.basepagename or "" | | local basepagename = args.implicit.basepagename or "" |
| local ship_name = args.explicit.ship or args.implicit.pagename or "" | | local ship_name = args.explicit.ship or args.implicit.pagename or "" |
Line 204: |
Line 209: |
| end | | end |
| | | |
− | function ShipPage.ClassTemplateTest(frame, args) | + | function ShipPage.ClassTemplateTest(frame) |
− | args = args or U.getTemplateArgs(frame) | + | local args = U.getTemplateArgs(frame) |
− | local basepagename = args.implicit.basepagename or ""
| |
| local ship_name = args.explicit.ship or args.implicit.pagename or "" | | local ship_name = args.explicit.ship or args.implicit.pagename or "" |
| local ship = Ship(ship_name) | | local ship = Ship(ship_name) |
| local classI = ship:class() | | local classI = ship:class() |
− | local class = classI and classI:base_name_test() or "Unknown Class" | + | local class = classI and classI:base_name_test() or "?" |
− | if basepagename == "Sandbox" then | + | return string.format("|%s|%s|%s|", ship_name, ship:name(), tostring(class)) |
− | return "Sandbox/" .. class
| |
− | else
| |
− | return class
| |
− | end
| |
| end | | end |
| | | |
− | function ship_cgs(ship_name, ship_suffix, j, seasonal_forms) | + | function ship_cgs(ship_name, ship_suffix, j, seasonal_forms, visited_modules) |
| + | ship_suffix = ship_suffix or "" |
| j = j or 1 | | j = j or 1 |
− | ship_suffix = ship_suffix or "" | + | seasonal_forms = seasonal_forms or {} |
| + | visited_modules = visited_modules or {} |
| local forms = { { name = ship_name .. '/' .. ship_suffix, normal = true, damaged = true } } | | local forms = { { name = ship_name .. '/' .. ship_suffix, normal = true, damaged = true } } |
− | local success, ship_data = U.requireModule(ship_name) | + | local success, ship_data = Ship.requireModule(ship_name) |
| if not success then | | if not success then |
| return forms | | return forms |
| end | | end |
− | local form_data = ship_data[ship_suffix] | + | if not U.ifind(visited_modules, ship_name) then |
− | seasonal_forms = seasonal_forms or {}
| + | table.insert(visited_modules, ship_name) |
− | for suffix, data in pairs(ship_data) do
| + | -- TODO: legacy seasonals, check if it is ok to delete |
− | if data._seasonal or data._season then
| + | for suffix, data in pairs(ship_data) do |
− | local normal = data._cg ~= false
| + | if data._seasonal or data._season then |
− | local damaged = data._cg_damaged ~= false
| + | local normal = data._cg ~= false |
− | table.insert(seasonal_forms, {
| + | local damaged = data._cg_damaged ~= false |
− | suffux = data._suffix or suffix,
| + | table.insert(seasonal_forms, { |
− | name = (data._name or ship_name) .. "/" .. (data._suffix or suffix),
| + | suffux = data._suffix or suffix, |
− | seasonal = true,
| + | name = (data._name or ship_name) .. "/" .. (data._suffix or suffix), |
− | normal = normal,
| + | seasonal = true, |
− | damaged = damaged,
| + | normal = normal, |
− | season = data._season,
| + | damaged = damaged, |
− | season_suffix = data._season_suffix,
| + | season = data._season, |
− | })
| + | season_suffix = data._season_suffix, |
− | end
| + | battle_card = data._show_battle_card, |
− | end
| + | }) |
− | for _, data in ipairs(ship_data.seasonals or {}) do
| + | end |
− | local normal = data._cg ~= false
| + | end |
− | local damaged = data._cg_damaged ~= false
| + | for _, data in ipairs(ship_data.seasonals or {}) do |
− | table.insert(seasonal_forms, {
| + | local normal = data._cg ~= false |
− | suffux = data._suffix,
| + | local damaged = data._cg_damaged ~= false |
− | name = (data._name or ship_name) .. "/" .. data._suffix,
| + | table.insert(seasonal_forms, { |
− | seasonal = true,
| + | suffux = data._suffix, |
− | normal = normal,
| + | name = (data._name or ship_name) .. "/" .. data._suffix, |
− | damaged = damaged,
| + | seasonal = true, |
− | season = data._season,
| + | normal = normal, |
− | season_suffix = data._season_suffix,
| + | damaged = damaged, |
− | })
| + | season = data._season, |
| + | season_suffix = data._season_suffix, |
| + | battle_card = data._show_battle_card, |
| + | }) |
| + | end |
| end | | end |
| local i = 1 | | local i = 1 |
| + | local form_data = ship_data[ship_suffix] |
| while form_data and form_data._remodel_to and not U.find(forms, form_data._remodel_to, 'name') and i <= 15 and j <= 3 do | | while form_data and form_data._remodel_to and not U.find(forms, form_data._remodel_to, 'name') and i <= 15 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 U.concat(forms, ship_cgs(ship_name_next, ship_suffix_next, j + 1, seasonal_forms)) | + | return U.concat(forms, ship_cgs(ship_name_next, ship_suffix_next, j + 1, seasonal_forms, visited_modules)) |
| else | | else |
| local name = form_data._remodel_to | | local name = form_data._remodel_to |
Line 276: |
Line 283: |
| return format{ | | return format{ |
| [[<span class="advanced-tooltip">${cg}<div class="tooltip-contents">${card}${battle_card}</div></span>]], | | [[<span class="advanced-tooltip">${cg}<div class="tooltip-contents">${card}${battle_card}</div></span>]], |
− | cg = ShipGraphicKai:Asset({ name, link = "nil", damaged = damaged, size = size, hd = not seasonal }), | + | cg = ShipGraphicKai:Asset({ name, link = "nil", damaged = damaged, size = size, hd = true }), |
− | card = ShipCardKai:Asset({ name, link = "nil", damaged = damaged, hd = not seasonal }), | + | card = ShipCardKai:Asset({ name, link = "nil", damaged = damaged, hd = true }), |
− | battle_card = battle_card and ("<br>" .. ShipBattleCardKai:Asset({ name, link = "nil", damaged = damaged, hd = true })) or "" | + | battle_card = battle_card and ("<br>" .. ShipBattleCardKai:Asset({ name, link = "nil", damaged = damaged, hd = true })) or "", |
| } | | } |
| end | | end |
Line 332: |
Line 339: |
| end | | end |
| end | | end |
| + | |
| + | local blur_options = [=[<div style="margin-top:5px;text-align:right"> |
| + | <div class="toggle" data-target="nsfw" data-default="hide" data-classes="blur"> |
| + | <span class="toggle-show" style="cursor:pointer;color:#006cb0;">☑ Blur NSFW CG</span> |
| + | <span class="toggle-hide" style="cursor:pointer;color:#006cb0;">☒ Blur NSFW CG</span> |
| + | </div> |
| + | <div class="toggle" data-target="nsfw-damaged" data-default="hide" data-classes="blur"> |
| + | <span class="toggle-show" style="cursor:pointer;color:#006cb0;">☑ Blur other damaged CG</span> |
| + | <span class="toggle-hide" style="cursor:pointer;color:#006cb0;">☒ Blur other damaged CG</span> |
| + | </div> |
| + | </div>]=] |
| | | |
| function ShipPage.Gallery(frame, args) | | function ShipPage.Gallery(frame, args) |
Line 379: |
Line 397: |
| end | | end |
| table.insert(result, "</div>") | | table.insert(result, "</div>") |
| + | table.insert(result, blur_options) |
| return table.concat(result, "\n") | | return table.concat(result, "\n") |
| end | | end |
| | | |
− | function ShipPage.GalleryTabber(frame, args) | + | function ShipPage.GalleryTabber(args) |
− | args = args or U.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_cgs(ship_name) | | local forms = ship_cgs(ship_name) |
Line 394: |
Line 412: |
| table.insert(result, "{{!}}-{{!}}" .. title .. "=") | | table.insert(result, "{{!}}-{{!}}" .. title .. "=") |
| if form.normal and form.damaged then | | if form.normal and form.damaged then |
− | local image = cg(form.seasonal, form.name, false, "300px", not form.seasonal) | + | local image = cg(form.seasonal, form.name, false, "300px", form.battle_card or not form.seasonal) |
− | local image_damaged = cg(form.seasonal, form.name, true, "300px", not form.seasonal) | + | local image_damaged = cg(form.seasonal, form.name, true, "300px", form.battle_card or not form.seasonal) |
| table.insert(result, format{ | | table.insert(result, format{ |
| ShipPage._gallery_tabber, | | ShipPage._gallery_tabber, |
Line 402: |
Line 420: |
| }) | | }) |
| elseif form.normal then | | elseif form.normal then |
− | local image = cg(form.seasonal, form.name, false, "300px", not form.seasonal) | + | local image = cg(form.seasonal, form.name, false, "300px", form.battle_card or not form.seasonal) |
| table.insert(result, format{ | | table.insert(result, format{ |
| ShipPage._gallery_normal, | | ShipPage._gallery_normal, |
Line 408: |
Line 426: |
| }) | | }) |
| elseif form.damaged then | | elseif form.damaged then |
− | local image_damaged = cg(form.seasonal, form.name, true, "300px", not form.seasonal) | + | local image_damaged = cg(form.seasonal, form.name, true, "300px", form.battle_card or not form.seasonal) |
| table.insert(result, format{ | | table.insert(result, format{ |
| ShipPage._gallery_damaged, | | ShipPage._gallery_damaged, |
Line 417: |
Line 435: |
| end | | end |
| table.insert(result, "}}") | | table.insert(result, "}}") |
| + | table.insert(result, blur_options) |
| return table.concat(result, "\n") | | return table.concat(result, "\n") |
| + | end |
| + | |
| + | function ShipPage.BreakInstance(frame) |
| + | local args = U.getTemplateArgs(frame) |
| + | local ship_name = args.explicit.ship or args.implicit.pagename or "" |
| + | local forms = ship_cgs(ship_name) |
| + | return "<pre>\n" .. U.js(Ship(ship_name)) .. "\n</pre>" |
| end | | end |
| | | |
Line 426: |
Line 452: |
| ShipPage._footer_sections, | | ShipPage._footer_sections, |
| name = ship_name, | | name = ship_name, |
− | gallery = frame:preprocess(ShipPage.GalleryTabber(frame, args)), | + | gallery = frame:preprocess(ShipPage.GalleryTabber(args)), |
− | links = ShipPage.FooterLinks(frame, args) | + | links = ShipPage.FooterLinks(args) |
| } | | } |
| end | | end |
| | | |
| return ShipPage | | return ShipPage |