Line 27: |
Line 27: |
| | | |
| local function fromModule(name) | | local function fromModule(name) |
− | local data = loadData('Fleet/' .. name)
| |
| local result = '' | | local result = '' |
− | --if success then
| + | |
− | data = JSON.decode(data.api)
| |
− | for i, id in ipairs(data.api_ship_id) do
| |
− | result = result .. string.format(
| |
− | '|-\n|%s||%s||%s||%s||%s||%s||%s||%s||%s||%s||%s\n',
| |
− | getShipCard(id),
| |
− | data.api_ship_lv[i],
| |
− | data.api_Slot[i][1] > 0 and getEquipmentCard(data.api_Slot[i][1]) or 'style="background:grey;width:100px"| ',
| |
− | data.api_Slot[i][2] > 0 and getEquipmentCard(data.api_Slot[i][2]) or 'style="background:grey;width:100px"| ',
| |
− | data.api_Slot[i][3] > 0 and getEquipmentCard(data.api_Slot[i][3]) or 'style="background:grey;width:100px"| ',
| |
− | data.api_Slot[i][4] > 0 and getEquipmentCard(data.api_Slot[i][4]) or 'style="background:grey;width:100px"| ',
| |
− | -- data.api_nowhps[i],
| |
− | data.api_maxhps[i],
| |
− | data.api_Param[i][1],
| |
− | data.api_Param[i][2],
| |
− | data.api_Param[i][3],
| |
− | data.api_Param[i][4]
| |
− | )
| |
− | end
| |
− | --end
| |
| return result | | return result |
| end | | end |
Line 60: |
Line 40: |
| ![[File:Icon Torpedo.png]] | | ![[File:Icon Torpedo.png]] |
| ![[File:Icon AA.png]] | | ![[File:Icon AA.png]] |
− | ![[File:Icon Armor.png]] | + | ![[File:Icon Armor.png]]]=] |
− | ]=] | |
| | | |
| local tableHeaderSimple = [=[{|class="wikitable" style="text-align:center" | | local tableHeaderSimple = [=[{|class="wikitable" style="text-align:center" |
Line 67: |
Line 46: |
| !colspan="4"|Equipment | | !colspan="4"|Equipment |
| ]=] | | ]=] |
| + | |
| + | -- can count for scoring |
| + | -- can store fleet types in ship data modules |
| + | local friendTypes = { |
| + | ['DesDiv 31'] = { |
| + | 'Kishinami', |
| + | 'Naganami', |
| + | }, |
| + | ['Europe Fleet'] = { |
| + | 'Gotland', |
| + | 'Italia', |
| + | 'Littorio', |
| + | 'Nelson', |
| + | 'Pola', |
| + | 'Roma', |
| + | 'Warspite', |
| + | 'Zara', |
| + | }, |
| + | ['US Fleet'] = { |
| + | 'Intrepid', |
| + | 'Saratoga' |
| + | } |
| + | } |
| + | |
| + | local function getFleetType(fleet) |
| + | for k, v in pairs(friendTypes) do |
| + | for i, ship in ipairs(v) do |
| + | if _.ifindBy(fleet, function (e) return _.startsWith(e.ship, ship) end) then |
| + | return k |
| + | end |
| + | end |
| + | end |
| + | return 'Unassorted' |
| + | end |
| + | |
| + | local function formatHp(hps, maxHp) |
| + | return string.format( |
| + | '<span class="explain" title="%s">~/%s</span>', |
| + | _.ijoin(hps, ', '), |
| + | maxHp |
| + | ) |
| + | end |
| + | |
| + | local function renderFriend(args, frame) |
| + | local data = loadData('Fleet/Friend/' .. args.friend) |
| + | local groups = {} |
| + | for _, e in pairs(data) do |
| + | local fleetType = getFleetType(e.fleet) |
| + | groups[fleetType] = groups[fleetType] or {} |
| + | table.insert(groups[fleetType], e) |
| + | end |
| + | local result = {} |
| + | table.insert(result, '{{#tag:tabber|') |
| + | for fleetType, fleets in pairs(groups) do |
| + | table.sort(fleets, function(a, b) |
| + | return #(a.fleet) < #(b.fleet) |
| + | end) |
| + | table.insert(result, string.format('{{!}}-{{!}} %s =', fleetType)) |
| + | table.insert(result, '<tabber>') |
| + | for i, fleet in ipairs(fleets) do |
| + | table.insert(result, string.format('|-| %s =\n' .. tableHeaderFriend, 'Variant ' .. i)) |
| + | for j, ship in ipairs(fleet.fleet) do |
| + | table.insert(result, string.format( |
| + | '|-\n|%s||%s||%s||%s||%s||%s||%s||%s||%s||%s||%s', |
| + | getShipCard(ship.ship), |
| + | ship.level, |
| + | ship.equipment[1] and getEquipmentCard(ship.equipment[1]) or 'style="background:grey;width:100px"| ', |
| + | ship.equipment[2] and getEquipmentCard(ship.equipment[2]) or 'style="background:grey;width:100px"| ', |
| + | ship.equipment[3] and getEquipmentCard(ship.equipment[3]) or 'style="background:grey;width:100px"| ', |
| + | ship.equipment[4] and getEquipmentCard(ship.equipment[4]) or 'style="background:grey;width:100px"| ', |
| + | type(ship.hp) == 'table' and formatHp(ship.hp, ship.maxHp) or ship.hp ~= ship.maxHp and string.format('%s/%s', ship.hp, ship.maxHp) or ship.maxHp, |
| + | ship.firepower, |
| + | ship.torpedo, |
| + | ship.aa, |
| + | ship.armor |
| + | )) |
| + | end |
| + | table.insert(result, '|}') |
| + | end |
| + | table.insert(result, '</tabber>') |
| + | end |
| + | table.insert(result, '}}') |
| + | return table.concat(result, '\n') |
| + | end |
| | | |
| local function render(args, frame) | | local function render(args, frame) |
− | local tableHeader = args.friend and tableHeaderFriend or tableHeaderSimple | + | if args.friend then |
| + | return renderFriend(args, frame) |
| + | end |
| local result = {} | | local result = {} |
| local firstCell = true | | local firstCell = true |
Line 77: |
Line 142: |
| if arg:sub(0, 2) == '!!' then | | if arg:sub(0, 2) == '!!' then |
| if openSubtab then | | if openSubtab then |
− | table.insert(result, string.format('|}\n|-| %s =\n' .. tableHeader, arg:sub(3))) | + | table.insert(result, string.format('|}\n|-| %s =\n' .. tableHeaderSimple, arg:sub(3))) |
| else | | else |
− | table.insert(result, string.format('<tabber>\n|-| %s =\n' .. tableHeader, arg:sub(3))) | + | table.insert(result, string.format('<tabber>\n|-| %s =\n' .. tableHeaderSimple, arg:sub(3))) |
| openSubtab = true | | openSubtab = true |
| end | | end |
Line 90: |
Line 155: |
| table.insert(result, string.format('{{!}}-{{!}} %s =', arg:sub(2))) | | table.insert(result, string.format('{{!}}-{{!}} %s =', arg:sub(2))) |
| else | | else |
− | table.insert(result, string.format('{{#tag:tabber|\n{{!}}-{{!}} %s =', arg:sub(2))) | + | table.insert(result, string.format('{{#tag:tabber|\n{{!}}-{{!}} %s =', arg:sub(2))) |
| openTab = true | | openTab = true |
| end | | end |
Line 138: |
Line 203: |
| '-', 'Shigure/Kai Ni', 'Type 3 Active Sonar', 'Type 3 Active Sonar', | | '-', 'Shigure/Kai Ni', 'Type 3 Active Sonar', 'Type 3 Active Sonar', |
| }), | | }), |
− | test2 = render({ | + | test2 = function() |
− | friend = true,
| + | return render({ |
− | '!Europe Fleet', | + | friend = 'Early Fall 2018 Event', |
− | '!!Variant 1', | + | }) |
− | '~Europe Fleet 1', | + | end, |
| + | test3 = render({ |
| + | friend = 'Early Fall 2018 Event', |
| + | map = 'E-5', |
| + | }), |
| + | test4 = getFleetType({ |
| + | { ship = 'Littorio' } |
| }), | | }), |
| } | | } |
| -- print(p.test1) | | -- print(p.test1) |
| -- print(p.test2) | | -- print(p.test2) |
| + | -- print(p.test3) |