Line 1: |
Line 1: |
| -- Example how to not write modules. | | -- Example how to not write modules. |
| + | |
| + | local _ = require('Module:Core') |
| + | local JSON = require('Module:Core/JSON') |
| | | |
| local ShipBattleCardKai = require('Module:ShipBattleCardKai') | | local ShipBattleCardKai = require('Module:ShipBattleCardKai') |
| local EquipmentCardKai = require('Module:EquipmentCardKai') | | local EquipmentCardKai = require('Module:EquipmentCardKai') |
| + | local ShipsByApiId = require('Module:Collection/ShipsByApiId') |
| + | local EquipmentByApiId = require('Module:Collection/EquipmentByApiId') |
| + | |
| + | local function getShipCard(ship) |
| + | local id = tonumber(ship) |
| + | if id then |
| + | ship = ShipsByApiId[id] |
| + | end |
| + | return ShipBattleCardKai:Asset({ ship, hd = true }) |
| + | end |
| + | |
| + | local function getEquipmentCard(eq) |
| + | local id = tonumber(eq) |
| + | if id then |
| + | eq = EquipmentByApiId[id] |
| + | end |
| + | return EquipmentCardKai:Asset({ eq, size = '100px' }) |
| + | end |
| + | |
| + | local function fromModule(name) |
| + | local success, data = _.requireModule('Data/Fleet/Raw/' .. name) |
| + | local result = '' |
| + | if success then |
| + | data = JSON.decode(data) |
| + | --return _.js(data) |
| + | 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 ' ', |
| + | data.api_Slot[i][2] > 0 and getEquipmentCard(data.api_Slot[i][2]) or ' ', |
| + | data.api_Slot[i][3] > 0 and getEquipmentCard(data.api_Slot[i][3]) or ' ', |
| + | data.api_Slot[i][4] > 0 and getEquipmentCard(data.api_Slot[i][4]) or ' ', |
| + | -- 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 |
| + | end |
| + | |
| + | local tableHeaderFriend = [=[ {|class="wikitable" style="text-align:center" |
| + | !Ship |
| + | !Level |
| + | !colspan="4"|Equipment |
| + | ![[File:Icon HP.png]] |
| + | ![[File:Icon Gun.png]] |
| + | ![[File:Icon Torpedo.png]] |
| + | ![[File:Icon AA.png]] |
| + | ![[File:Icon Armor.png]]]=] |
| + | |
| + | local tableHeader = [=[{|class="wikitable" style="text-align:center"\n!Ship\n!colspan="4"|Equipment]=] |
| | | |
| local function render(args, frame) | | local function render(args, frame) |
| + | local tableHeader = args.friend and tableHeaderFriend or tableHeader |
| local result = {} | | local result = {} |
| local firstCell = true | | local firstCell = true |
Line 12: |
Line 73: |
| 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{|class="wikitable" style="text-align:center"\n!Ship\n!colspan="4"|Equipment', arg:sub(3))) | + | table.insert(result, string.format('|}\n|-| %s =\n' .. tableHeader, arg:sub(3))) |
| else | | else |
− | table.insert(result, string.format('<tabber>\n|-| %s =\n{|class="wikitable" style="text-align:center"\n!Ship\n!colspan="4"|Equipment', arg:sub(3))) | + | table.insert(result, string.format('<tabber>\n|-| %s =\n' .. tableHeader, arg:sub(3))) |
| openSubtab = true | | openSubtab = true |
| end | | end |
Line 28: |
Line 89: |
| openTab = true | | openTab = true |
| end | | end |
| + | elseif arg:sub(0, 1) == '~' then |
| + | table.insert(result, fromModule(arg:sub(2))) |
| elseif arg == '-' then | | elseif arg == '-' then |
| table.insert(result, '|-') | | table.insert(result, '|-') |
Line 33: |
Line 96: |
| else | | else |
| if firstCell then | | if firstCell then |
− | table.insert(result, '|' .. ShipBattleCardKai:Asset({ arg, hd = true })) | + | table.insert(result, '|' .. getShipCard(arg)) |
| firstCell = false | | firstCell = false |
| else | | else |
− | table.insert(result, '|' .. EquipmentCardKai:Asset({ arg, size = '100px' })) | + | table.insert(result, '|' .. getEquipmentCard(arg)) |
| end | | end |
| end | | end |
Line 57: |
Line 120: |
| return frame:preprocess(render(getArgs{ frame = frame:getParent() })) | | return frame:preprocess(render(getArgs{ frame = frame:getParent() })) |
| end, | | end, |
− | test = render({ | + | test1 = render({ |
| '!1 DD', | | '!1 DD', |
| '!!Example 1', | | '!!Example 1', |
− | '-', 'Yuudachi/Kai Ni', 'Type 3 Active Sonar', | + | '-', '1', 'Type 3 Active Sonar', |
| '!!Example 2', | | '!!Example 2', |
− | '-', 'Yuudachi/Kai Ni', 'Type 3 Active Sonar', 'Type 3 Active Sonar', | + | '-', 'Yuudachi/Kai Ni', '282', '282', |
| '!2 DD', | | '!2 DD', |
| '!!Example 1', | | '!!Example 1', |
Line 70: |
Line 133: |
| '-', 'Yuudachi/Kai Ni', 'Type 3 Active Sonar', 'Type 3 Active Sonar', | | '-', 'Yuudachi/Kai Ni', 'Type 3 Active Sonar', 'Type 3 Active Sonar', |
| '-', 'Shigure/Kai Ni', 'Type 3 Active Sonar', 'Type 3 Active Sonar', | | '-', 'Shigure/Kai Ni', 'Type 3 Active Sonar', 'Type 3 Active Sonar', |
| + | }), |
| + | test2 = render({ |
| + | friend = true, |
| + | '!Europe Fleet', |
| + | '!!Variant 1', |
| + | '~Europe Fleet 1', |
| }), | | }), |
| } | | } |
| + | -- print(p.test1) |
| + | -- print(p.test2) |