Module:Grid
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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 iFill = nil --[[for fluid_cell implementation]] 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, '~(.+)') iName = string.match(iName, '(.+)~') end if(iName:find("%^")) then iFill = string.match(iName, '%^(.+)') iName = string.match(iName, '(.+)%^') end paras = { } paras["name"] = iName if(iLink ~= nil) then paras["link"]=iLink end if(iFill ~= nil) then paras["fill"]=iFill 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.tank(f) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args end local link = args.link or '' local tank = args.tank or '' local left = args.left or '' local width = args.width or '24' local top = tonumber(args.top) or 92 local height = tonumber(args.height) or 94 local max = tonumber(args.max) or 10000 local fill = tonumber(args.fill) or 0 if fill > max then top = top - height up = height down = height * 2 else top = top - ((height/max)*fill) up = (height/max)*fill down = height + ((height/max)*fill) end local div = mw.html.create('div') div :addClass('tooltip') :css('left', left .. 'px') :css('top', tostring(top) .. 'px') :css('position', 'absolute') :css('width', width .. 'px') :css('height', tostring(height) .. 'px') :css('clip', 'rect(' .. tostring(up) .. 'px,' .. tostring(width) ..'px,' .. tostring(down) .. 'px,0px)') :attr('title', tank) :wikitext('[[File:Tank ' .. tank .. '.png|' .. tostring(width) .. 'px|link=' .. link .. '|alt=]]') return tostring( div ) 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.turningBarrel(number,t) if t == nil then if number == '1' then return 38 elseif number == '2' then return 46 elseif number == '3' then return 52 elseif number == '4' then return 58 else return 64 end else if number == '1' then return 26 elseif number == '2' then return 20 elseif number == '3' then return 14 elseif number == '4' then return 6 else return 0 end 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.nobreak then gridArgs.nobreak = args.nobreak end if args.Output == nil then return f:expandTemplate{title='Grid/Turning Table/Return', args=gridArgs} else gridArgs.Output = args.Output end local valid = {Drill='Iron', Handle='Iron', Axle='Iron', Wood='Wooden', Wooden='Wooden'} if valid[args.Output] == nil then return f:expandTemplate{title='Grid/Turning Table/Return', args=gridArgs} else gridArgs.Type = valid[args.Output] end if gridArgs.Type == 'Wooden' then bounce = 3 else bounce = 5 end gridArgs.top = 70 if args.Layout ~= nil and args.Layout:find(',') then local layout = mw.text.split(args.Layout,"%g*,%g*") for i = 1, #layout do if tonumber(layout[i]) > bounce then layout[i] = tostring(bounce) elseif tonumber(layout[i]) < 1 then layout[i] = "1" end if tonumber(layout[i]) == 5 then gridArgs.top = 71 end end gridArgs.n1 = p.turningNumber(layout[1]) gridArgs.b1 = p.turningBarrel(layout[1]) gridArgs.b1t = p.turningBarrel(layout[1],1) gridArgs.n2 = p.turningNumber(layout[2]) gridArgs.b2 = p.turningBarrel(layout[2]) gridArgs.b2t = p.turningBarrel(layout[2],1) gridArgs.n3 = p.turningNumber(layout[3] or bounce) gridArgs.b3 = p.turningBarrel(layout[3] or bounce) gridArgs.b3t = p.turningBarrel((layout[3] or bounce),1) gridArgs.n4 = p.turningNumber(layout[4] or bounce) gridArgs.b4 = p.turningBarrel(layout[4] or bounce) gridArgs.b4t = p.turningBarrel((layout[4] or bounce),1) gridArgs.n5 = p.turningNumber(layout[5] or bounce) gridArgs.b5 = p.turningBarrel(layout[5] or bounce) gridArgs.b5t = p.turningBarrel((layout[5] or bounce),1) else barrelbounce = p.turningBarrel(bounce) barreltbounce = p.turningBarrel(bounce,1) bounce = p.turningNumber(bounce) gridArgs.n1 = bounce gridArgs.b1 = barrelbounce gridArgs.b1t = barreltbounce gridArgs.n2 = bounce gridArgs.b2 = barrelbounce gridArgs.b2t = barreltbounce gridArgs.n3 = bounce gridArgs.b3 = barrelbounce gridArgs.b3t = barreltbounce gridArgs.n4 = bounce gridArgs.b4 = barrelbounce gridArgs.b4t = barreltbounce gridArgs.n5 = bounce gridArgs.b5 = barrelbounce gridArgs.b5t = barreltbounce end return f:expandTemplate{title='Grid/Turning Table/Return', args=gridArgs} end return p --</syntaxhighlight>