Editing Module:RecipeTable
From Eco - English Wiki
Your changes will be displayed to readers once an authorized user accepts them. (help)
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
-- 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, Level Needed, Materials, | |||
headerStr = headerStr .. '! colspan=\"4\" | | -- Item, Level Needed, Materials, Related Specialty | ||
headerStr = headerStr .. '! colspan=\"4\" | Item !! Level Needed !! colspan=\"4\" | Materials !! Crafting Time <br>(Mins) !! style="width: 100px" | Related <br> Specialty\n' | |||
return headerStr | return headerStr | ||
end | end | ||
function | function imagedisp( name ) | ||
local str = '' | local str = '' | ||
str = str .. '| [[' .. | local image | ||
-- Manual override for image file | |||
if name then | |||
image = string.gsub(name, ' ', '') .. '_Icon.png' | |||
else | |||
image = 'NoImage.png' | |||
end | |||
str = str .. '[[File:' .. image .. '|frameless|50px|link=' .. name .. ']] <br> [[' .. name .. ']]' | |||
return str | |||
end | end | ||
function itemcell(args) | function stationcell( args ) | ||
local str = '' | |||
str = str .. '| ' .. imagedisp(args[1]) | |||
return str | |||
end | |||
function itemcell( args ) | |||
local str = '' | local str = '' | ||
str = str .. '| ' .. imagedisp(args[1]) | |||
str = str .. '<br>x' .. args[2] .. '\n' | |||
return str | |||
end | end | ||
function | function skillreqcell( args ) | ||
local str = '' | local str = '' | ||
str = str .. '| ' .. imagedisp(args[1]) | |||
str = str .. '<br> Level ' .. args[2] .. ' \n' | |||
return str | |||
end | end | ||
function | function groupedskillcell( args ) | ||
local str = '' | local str = '' | ||
str = str .. '| ' .. imagedisp(args[1]) | |||
if args[2] ~= nil then | |||
str = str .. ' <br> ' .. imagedisp(args[2]) | |||
end | |||
return str | |||
end | end | ||
-- Create a wikitable of recipes | -- Create a wikitable of recipes | ||
function p.main(recipes) | function p.main( recipes ) | ||
local rows = '' | local rows = '' | ||
--Not relevant for v0.9 | |||
-- find number of times each Affect by Skill occurs | |||
--local prevSkill = recipes[1].efficiencySkills[1] | |||
--local skillIndex = {} | |||
--local prevSkillnum = 0 | |||
--local count = 0 | |||
--for num = 1, #recipes do | |||
--if prevSkill ~= recipes[num].efficiencySkills[1] then | |||
--skillIndex[#skillIndex + 1] = prevSkillnum + count | |||
--prevSkillnum = 1 | |||
--if #recipes[num].ingredients > 4 then | |||
--count = 1 | |||
--else | |||
--count = 0 | |||
--end | |||
--prevSkill = recipes[num].efficiencySkills[1] | |||
--else | |||
--prevSkillnum = prevSkillnum + 1 | |||
--if #recipes[num].ingredients > 4 then | |||
--count = count + 1 | |||
--end | |||
--end | |||
--end | |||
--skillIndex[#skillIndex + 1] = prevSkillnum + count | |||
-- Get each row | -- Get each row | ||
local j = 0 | |||
local k = 1 | |||
for i = 1, #recipes do | for i = 1, #recipes do | ||
-- get information from the current recipe for building | |||
local checkImage = recipes[i].checkImage | |||
local craftStn = recipes[i].craftStn | |||
local skillNeeds = recipes[i].skillNeeds | |||
--use last variant as this is always the default variant | |||
local numberOfVariants = recipes[i].numberOfVariants | |||
--loop through variants to select default variant details | |||
--FOR STILL NOT WORKING - ingredients and products are being set to NULL | |||
--NOTE - for loop doesn't appear to get cycled at all. | |||
for k, v in pairs(recipes[i].variants) do --AS IT IS A FOR LOOP, WILL ALWAYS SET FINAL VALUE WHICH IS ALSO DEFAULT VARIANT | |||
--if statement redundant - last variant should always be default | |||
if v.products[1][1] == recipes[i].defaultVariant then | |||
local ingredients = v.ingredients | |||
local products = v.products --THIS MAY PRODUCE ODD RESULTS, NEED TO CHECK | |||
local products = {{'DEFAULT PRODUCT FOUND','1'}} | |||
local ingredients = {{'DEFAULT INGREDIENT FOUND','1'}} | |||
else | |||
--TEST CODE | |||
local products = {{'DEFAULT PRODUCT NOT FOUND','1'}} | |||
local ingredients = {{'DEFAULT INGREDIENT TEST','1'}} | |||
end | |||
local products = {{'DEFAULT PRODUCT NOT FOUND FOR LOOP HAPPENED','1'}} | |||
local ingredients = {{'DEFAULT INGREDIENT TEST FOR LOOP HAPPENED','1'}} | |||
end | |||
local baseCraftTime = recipes[i].baseCraftTime | |||
--yet to be put into table output | |||
local baseLaborCost = recipes[i].baseLaborCost | |||
local baseXPGain = recipes[i].baseXPGain | |||
-- determine the size needed for products to display correctly | |||
local ingrednum = #ingredients | |||
local rowspan = '|' | |||
if ingrednum > 4 then | |||
rowspan = '| rowspan=\"2\" ' | |||
end | |||
-- String to return | |||
local row = '|-\n' | |||
-- Add new row if products or ingredients are passed in with at least 1 item | |||
if (products[1] and ingredients[1]) then | |||
-- Show or hide the Crafting Station column | |||
if recipes[i].dispCraftStn == 1 then | |||
row = row .. rowspan .. stationcell({craftStn[1]}) .. '\n' | |||
end | |||
-- Add the products columns | |||
local prodnum = #products | |||
for a = 1, prodnum do | |||
if prodnum == 1 then | |||
row = row .. rowspan .. ' colspan=\"4\" ' | |||
end | |||
if ((prodnum == 2) or (prodnum == 3 and a == 2)) then | |||
row = row .. rowspan .. ' colspan=\"2\" ' | |||
end | |||
row = row .. itemcell({products[a][1], products[a][2]}) | |||
end | |||
-- Add the Skill needed column | |||
if (skillNeeds[1] ~= '' and skillNeeds[1] ~= nil) then | |||
row = row .. rowspan .. skillreqcell({skillNeeds[1][1], skillNeeds[1][2]}) | |||
else | |||
row = row .. rowspan | |||
if ingrednum > 4 then | |||
row = row .. '|' | |||
end | |||
row = row .. ' \'\'None\'\' \n' | |||
end | |||
-- Add the FIRST row of Ingredients column | |||
local numing = ingrednum | |||
if ingrednum > 4 then | |||
numing = 4 | |||
end | |||
for b = 1, numing do | |||
if (ingrednum == 1) then | |||
row = row .. '| colspan=\"4\" ' | |||
end | |||
if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then | |||
row = row .. '| colspan=\"2\" ' | |||
end | |||
row = row .. itemcell({ingredients[b][1], ingredients[b][2]}) | |||
end | |||
-- Add the Crafting time column | |||
row = row .. rowspan | |||
if ingrednum > 4 then | |||
row = row .. '|' | |||
end | |||
if baseCraftTime then | |||
row = row .. baseCraftTime .. '\n' | |||
else | |||
row = row .. rowspan .. ' \'\'missing\'\' \n' | |||
end | |||
-- not in v0.9 | |||
-- Add the Affect by Skills column IF new skill grouping | |||
--if j == 0 and (recipes[i].efficiencySkills[1] ~= nil and recipes[i].efficiencySkills[1] ~= 'nil') then | |||
--row = row .. '| rowspan=\"' .. skillIndex[k] .. '\" ' .. groupedskillcell({recipes[i].efficiencySkills[1], recipes[i].speedSkills}) .. '\n' | |||
--elseif (recipes[i].efficiencySkills[1] == nil or recipes[i].efficiencySkills[1] == 'nil') then | |||
--row = row .. '| \n' | |||
--end | |||
--j = j + 1 | |||
--if #ingredients > 4 then | |||
--j = j + 1 | |||
--end | |||
--if j == skillIndex[k] then | |||
--k = k + 1 | |||
--j = 0 | |||
--end | |||
-- Add the SECOND row of ingredients to ingredients column if applicable | |||
if ingrednum > 4 then | |||
row = row .. '|-\n' | |||
for b = 5, ingrednum do | |||
if (ingrednum == 5) then | |||
row = row .. '| colspan=\"4\" ' | |||
end | |||
if ((ingrednum == 6) or (ingrednum == 7 and b == 6)) then | |||
row = row .. '| colspan=\"2\" ' | |||
end | |||
row = row .. itemcell({ingredients[b][1], ingredients[b][2]}) | |||
end | |||
end | |||
rows = rows .. row | |||
end | |||
end | |||
-- Return the full wikitable | -- Return the full wikitable | ||
return header({recipes[1].dispCraftStn}) .. rows .. '|-\n|}\n' | |||
end | end | ||
return p | return p |