Bearbeiten von „Modul:RecipeTable“
Aus Eco - Deutsches Wiki
Deine Änderungen werden angezeigt, sobald ein dazu berechtigter Benutzer sie akzeptiert hat. (Hilfe)
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
local | -- A cell in the table | ||
function cell( args ) | |||
local str = '' | |||
local image | |||
-- Manual override for image file | |||
if args[3] then | |||
image = string.gsub(args[3], ' ', '') | |||
else | |||
image = string.gsub(args[2], ' ', '') .. '_Icon.png' | |||
end | |||
-- Check if file exists | |||
--if args[1] == 1 then | |||
-- if not mw.title.makeTitle('File', image).exists then | |||
-- image = 'NoImage.png' | |||
-- end | |||
--end | |||
str = str .. '| [[File:' .. image .. '|frameless|50px|link=' .. args[2] .. ']] <br> [[' .. args[2] .. ']] ' | |||
if args[4] ~= nil then | |||
str = str .. 'x' .. args[4] .. ' |' | |||
elseif args[5] ~= nil then | |||
str = str .. '<br> Level ' .. args[5] .. ' |' | |||
elseif args[6] then | |||
if args[7] then | |||
local image2 | |||
-- Manual override for image file | |||
if args[8] then | |||
image2 = string.gsub(args[8], ' ', '') | |||
else | |||
image2 = string.gsub(args[7], ' ', '') .. '_Icon.png' | |||
end | |||
-- Check if file exists | |||
if args[1] == 1 then | |||
if not mw.title.makeTitle('File', image2).exists then | |||
image2 = 'NoImage.png' | |||
end | |||
end | |||
str = str .. '<br> <br> [[File:' .. image2 .. '|frameless|50px|link=' .. args[7] .. ']] <br> [[' .. args[7] .. ']]' | |||
end | |||
else | |||
str = str .. '|' | |||
end | |||
return str | |||
end | |||
-- Header for the wikitable | -- Header for the wikitable | ||
function header(args) | function header( args ) | ||
local headerStr = '{| class=\"wikitable mw-collapsible\" style=\"text-align: center;\"\n|-\n' | local headerStr = '{| class=\"wikitable mw-collapsible\" style=\"text-align: center;\"\n|-\n' | ||
-- Show or hide the Crafting Station column | -- Show or hide the Crafting Station column | ||
if args[1] == | if args[1] == 1 then | ||
headerStr = headerStr .. '! | headerStr = headerStr .. '! Crafting Station !' | ||
end | end | ||
-- Item, | |||
headerStr = headerStr .. '! colspan=\" | -- Item, Skill needed, Materials, Affected by skills | ||
headerStr = headerStr .. '! colspan=\"2\" | Item !! Skill needed !! colspan=\"4\" | Materials !! Crafting <br> time !! style="width: 100px" | Affected <br> by skills\n' | |||
return headerStr | return headerStr | ||
end | end | ||
function | -- Row for recipe | ||
local | function recipeRow( recipe ) | ||
local | -- Parse recipe | ||
local checkImage = recipe.checkImage | |||
local craftStn = recipe.craftStn | |||
elseif | local item1 = recipe.item1 | ||
local item2 = recipe.item2 | |||
local skillNeed = recipe.skillNeed | |||
local mater1 = recipe.mater1 | |||
local mater2 = recipe.mater2 | |||
local mater3 = recipe.mater3 | |||
local mater4 = recipe.mater4 | |||
local ctime = recipe.ctime | |||
-- String to return | |||
local row = '|-\n' | |||
-- Return '' if item1 or mater1 aren't passed in | |||
if not item1[1] then | |||
return '' | |||
elseif not mater1[1] then | |||
return '' | |||
end | end | ||
-- Show or hide the Crafting Station column | |||
if | if recipe.dispCraftStn == 1 then | ||
row = row .. cell({checkImage, craftStn[1], craftStn[2]}) | |||
end | end | ||
if | -- Add the Item columns | ||
if item2[1] then | |||
row = row .. cell({checkImage, item1[1], item1[2], item1[3]}) .. cell({checkImage, item2[1], item2[2], item2[3]}) | |||
else | |||
row = row .. '| colspan=\"2\" ' .. cell({checkImage, item1[1], item1[2], item1[3]}) | |||
end | end | ||
-- Add the Skill needed column | |||
end | if recipe.skillNeed[1] ~= '' then | ||
row = row .. cell({checkImage, skillNeed[1], skillNeed[2], nil, skillNeed[3]}) | |||
else | |||
row = row .. '| \'\'None\'\' |' | |||
end | |||
-- Add the Materials column | |||
if mater2[1] then | |||
if mater3[1] then | |||
if mater4[1] then | |||
end | row = row .. cell({checkImage, mater1[1], mater1[2], mater1[3]}) .. cell({checkImage, mater2[1], mater2[2], mater2[3]}) .. cell({checkImage, mater3[1], mater3[2], mater3[3]}) .. cell({chackImage, mater4[1], mater4[2], mater4[3]}) | ||
else | |||
row = row .. cell({checkImage, mater1[1], mater1[2], mater1[3]}) .. '| colspan=\"2\" ' .. cell({checkImage, mater2[1], mater2[2], mater2[3]}) .. cell({checkImage, mater3[1], mater3[2], mater3[3]}) | |||
end | |||
else | |||
row = row .. '| colspan=\"2\" ' .. cell({checkImage, mater1[1], mater1[2], mater1[3]}) .. '| colspan=\"2\" ' .. cell({checkImage, mater2[1], mater2[2], mater2[3]}) | |||
end | |||
else | |||
row = row .. '| colspan=\"4\" ' .. cell({checkImage, mater1[1], mater1[2], mater1[3]}) | |||
end | |||
-- Add the Crafting time column | |||
if ctime then | |||
row = row .. '| ' .. ctime | |||
else | else | ||
row = row .. '| \'\'missing\'\'' | |||
end | end | ||
row = row .. '\n' | |||
return row | |||
return | |||
end | end | ||
-- Create a wikitable of recipes | -- Create a wikitable of recipes | ||
function p.main(recipes) | function p.main( recipes ) | ||
local rows = '' | local rows = '' | ||
-- find number of times each Affect by Skill occurs | |||
local prevSkill = recipes[1].affSkill1[1] | |||
local skillIndex = {} | |||
local prevSkillnum = 0 | |||
for num = 1, #recipes do | |||
if prevSkill ~= recipes[num].affSkill1[1] then | |||
skillIndex[#skillIndex + 1] = prevSkillnum | |||
prevSkillnum = 1 | |||
prevSkill = recipes[num].affSkill1[1] | |||
else | |||
prevSkillnum = prevSkillnum + 1 | |||
end | |||
end | |||
skillIndex[#skillIndex + 1] = prevSkillnum | |||
-- Get each row | -- Get each row | ||
local j = 0 | |||
local k = 1 | |||
for i = 1, #recipes do | for i = 1, #recipes do | ||
-- | -- Main part of the row | ||
rows = rows .. recipeRow(recipes[i]) | |||
-- Affect by Skill | |||
-- | if j == 0 and recipes[i].affSkill1[1] ~= nil then | ||
rows = rows .. '| rowspan=\"' .. skillIndex[k] .. '\" ' .. cell({recipes[i].checkImage, recipes[i].affSkill1[1], recipes[i].affSkill1[2], nil, nil, 1, recipes[i].affSkill2[1], recipes[i].affSkill2[2]}) .. '\n' | |||
elseif recipes[i].affSkill1[1] == nil then | |||
rows = rows .. '| |\n' | |||
end | end | ||
j = j + 1 | |||
if j == skillIndex[k] then | |||
k = k + 1 | |||
j = 0 | |||
end | end | ||
end | end | ||
-- Return the full wikitable | -- Return the full wikitable | ||
return header({ recipes[1].dispCraftStn }) .. rows .. '|-\n|}\n' | return header({recipes[1].dispCraftStn}) .. rows .. '|-\n|}\n' | ||
end | end | ||
return p | return p |