Module:Grid
Jump to navigation
Jump to search
This module is a WIP (work in progress), but is still being called by {{Grid/Crafting Table}}, so any changes should be tested to avoid inconvenience.
Related Links[edit]
- Module:Grid/Aliases - list of aliases to automatically fix certain grid tooltips
- Template:Grid - the wiki template that this expands into
The above documentation is transcluded from Module:Grid/doc. (edit | history)
--<syntaxhighlight lang="lua">
local p = {}
-- Individual cell
function p.grid(item)
if (item == nil) then return { } end
local iLink = nil
local iNum= math.floor( string.match(item, ',%s*(%d+)' ) or 0 )
local iName = string.sub(string.match(item, '.+,') or item..' ', 1, -2)
local tooltip = string.match(item, '%[.+%]')
if tooltip ~= nil then
iName = string.sub(iName, string.len(tooltip)+1)
tooltip = string.sub(tooltip,2,-2)
end
local hasPercentage = string.match(item, "[%%]")
local aliases = mw.loadData('Module:Grid/Aliases')
if tooltip == nil then
if aliases[iName] then
tooltip = aliases[iName]
end
else
if aliases[tooltip] then
tooltip = aliases[tooltip]
end
end
if(iName:find("~")) then
iLink = string.match(iName, '~([%a%s-]+)')
iName = string.match(iName, '([%a%s-]+)~')
end
paras = { }
paras["name"] = iName
if(iLink ~= nil) then paras["link"]=iLink end
if(iNum > 1 or hasPercentage) then paras["number"]=iNum end
if(hasPercentage) then paras["percent"]="x" end
if(tooltip ~= nil) then paras["tooltip"]=tooltip end
return paras
end
-- Gets a cell or animated cell
function p.cell(f, item)
if (item == nil) then return '' end
if (item:find(';')) then
local text = '<div class=\"animated-grids\">'
for frame in mw.text.gsplit( item, '%s*;%s*' ) do
text = text .. '<span class=\"animated-grid\">'
if frame == 'Blank' or frame == 'blank' then
text = text .. ''
else
text = text .. f:expandTemplate{ title='Grid', args = p.grid(frame) }
end
text = text .. '</span>'
end
text = text .. '</div>'
return text
end
return f:expandTemplate{ title='Grid', args = p.grid(item) }
end
--[[
function p.liquid(f, item)
if (item == nil) then return '' end
local text = ''
for i=1,3,1 do
text = text .. f:expandTemplate{ title='Grid', args = p.grid(item) }
end
return text
end
--]]
function p.gc ( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
return p.cell(f, (args[1] or args.name))
end
function p.craftingTable( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
local gridArgs = {
A1=p.cell(f, args.A1),
A2=p.cell(f, args.A2),
A3=p.cell(f, args.A3),
B1=p.cell(f, args.B1),
B2=p.cell(f, args.B2),
B3=p.cell(f, args.B3),
C1=p.cell(f, args.C1),
C2=p.cell(f, args.C2),
C3=p.cell(f, args.C3),
Output=p.cell(f, args.Output),
Break=args.Break
}
return f:expandTemplate{ title='Crafting', args= gridArgs}
end
function p.furnace( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
local gridArgs = {
Input=p.cell(f, (args.Input or args.Top)),
Fuel=p.cell(f, (args.Fuel or args.Bottom)),
Output=p.cell(f, args.Output),
Break=args.Break
}
return f:expandTemplate{ title='Crafting/Furnace', args= gridArgs}
end
function p.turningNumber(number)
if number == '1' then return 22
elseif number == '2' then return 44
elseif number == '3' then return 66
elseif number == '4' then return 88
else return 110
end
end
function p.turning(f)
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
local gridArgs = {Output=p.cell(f, args.Output)}
if args.float or args.Float then gridArgs.float = args.float or args.Float end
if args.Output == nil then return f:expandTemplate{title='Grid/Turning Table/Return', args=gridArgs} end
--[[gridArgs.Type = string.sub(mw.text.split(args.Output,"%s* %s*")[1],2,-1)
local valid = {Wooden=true, Iron=true}
if valid[gridArgs.Type] == nil then
--Someone's done a boo boo.
return f:expandTemplate{title='Grid/Turning Table/Return', args=gridArgs}
end--]]
gridArgs.Type = 'Iron'
if gridArgs.Type == 'Wooden' then
local bounce = 3
else
local bounce = 5
end
if args.Layout ~= nil and args.Layout:find(',') then
local layout = mw.text.split(args.Layout,"%g*,%g*")
gridArgs.n1 = p.turningNumber(layout[0])
gridArgs.n2 = p.turningNumber(layout[1])
gridArgs.n3 = p.turningNumber(layout[2] or bounce)
gridArgs.n4 = p.turningNumber(layout[3] or bounce)
gridArgs.n5 = p.turningNumber(layout[4] or bounce)
else
bounce = p.turningNumber(bounce)
gridArgs.n1 = bounce
gridArgs.n2 = bounce
gridArgs.n3 = bounce
gridArgs.n4 = bounce
gridArgs.n5 = bounce
end
return f:expandTemplate{title='Grid/Turning Table/Return', args=gridArgs}
end
return p
--</syntaxhighlight>