Changes

m
166 revisions imported
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
Bots, gkautomate
12,557

edits