Module:Crafting: Difference between revisions
Jump to navigation
Jump to search
(fix the puffer i hope) |
mNo edit summary |
||
(40 intermediate revisions by 2 users not shown) | |||
Line 97: | Line 97: | ||
if hideTooltip then | if hideTooltip then | ||
sprite:HideTooltip() | sprite:HideTooltip() | ||
end | end | ||
local inline = args['inline'] or args['Inline'] | local inline = args['inline'] or args['Inline'] | ||
local spriteDiv | local spriteDiv | ||
local parentDiv | local parentDiv = mw.html.create("span"):css("position","relative") | ||
if inline ~= 'false' then | if inline ~= 'false' then | ||
spriteDiv = sprite:GenerateHTML("span") | spriteDiv = sprite:GenerateHTML("span") | ||
spriteDiv:css("display","inline-block") | spriteDiv:css("display","inline-block") | ||
spriteDiv:css("vertical-align","middle") | spriteDiv:css("vertical-align","middle") | ||
else | else | ||
spriteDiv = sprite:GenerateHTML() | spriteDiv = sprite:GenerateHTML() | ||
end | end | ||
local count = tonumber(args['count']) or tonumber(args['Count']) or | local count = tonumber(args['count']) or tonumber(args['Count']) or string.match(tostring(args['count']),'%?') or string.match(tostring(args['Count']),'%?') or 1 | ||
if count ~= 1 then | if count ~= 1 then | ||
local countSpan = parentDiv:tag("span"):wikitext(count) | local countSpan = parentDiv:tag("span"):wikitext(count) | ||
countSpan:addClass("invslot-stacksize") | countSpan:addClass("invslot-stacksize") | ||
end | end | ||
local enchanted = args['enchanted'] or args['Enchanted'] | |||
if enchanted == 'true' then | |||
spriteDiv:addClass("enchanted") | |||
end | |||
local link = args['link'] or args['Link'] | |||
if link and #link ~= 0 then | |||
if link:sub( 1,2 ) == '[[' then | |||
parentDiv:wikitext(link:sub( 1,#link-2 ) .. '|') | |||
elseif link:sub ( 1,1 ) == '[' then | |||
parentDiv:wikitext(link:sub( 1,#link-1 ) .. '|') | |||
end | |||
end | |||
parentDiv:node(spriteDiv) | parentDiv:node(spriteDiv) | ||
if link and #link ~= 0 then | |||
if link:sub( 1,2 ) == '[[' then | |||
parentDiv:wikitext(']]') | |||
elseif link:sub ( 1,1 ) == '[' then | |||
parentDiv:wikitext(']') | |||
end | |||
end | |||
return parentDiv | return parentDiv | ||
Line 178: | Line 193: | ||
if hideTooltip then | if hideTooltip then | ||
sprite:HideTooltip() | sprite:HideTooltip() | ||
end | end | ||
Line 192: | Line 202: | ||
spriteDiv:css("border-width","3px") | spriteDiv:css("border-width","3px") | ||
spriteDiv:css("border-style","solid") | spriteDiv:css("border-style","solid") | ||
spriteDiv:css("box-sizing","border-box") | |||
if args['standard'] or args['Standard'] then | if args['standard'] or args['Standard'] then |
Latest revision as of 22:00, 4 March 2024
Implements {{Template:Crafting}}
Dependency
See Also
- Template:Crafting
- Template:CraftingCatalyst
- Template:CraftingCell
- Template:CraftingGrid
- Template:CraftingHopper
p = {}
function Grid(args, w, h, large)
return require([[Module:InventorySlot]]).Call(args,w,h,large)
end
-- Make a 3*3 crafting grid
function p.Grid( f )
local args = f.args
if #args == 0 then
args = f:getParent().args
end
return Grid(args, args['width'] or args['Width'] or 3, args['height'] or args['Height'] or 3)
end
-- Make a 1*1 crafting grid
function p.Cell( f )
local args = f.args
if #args == 0 then
args = f:getParent().args
end
return Grid(args, 1, 1, args.Large)
end
-- make a 1*5 crafting grid
function p.Hopper( f )
local args = f.args
if #args == 0 then
args = f:getParent().args
end
return Grid(args, 5, 1)
end
-- Make a catalyst
function p.Catalyst( f )
local args = f.args
if #args == 0 then
args = f:getParent().args or {""}
end
local d = require([[Module:InventorySlot]]).Decode(args[1])
if not(d) then error(d) end
return d:SetSize(16)
:GenerateHTML()
:addClass( "catalyst" )
end
-- Make an item
function p.Item( f )
local args = f.args
if #args == 0 then
args = f:getParent().args or {""}
end
local sprite
local image = args['image'] or args['Image']
if image then
local Sprite = require([[Module:Sprite]])
sprite = Sprite.Custom:new(args[1], image)
else
local spriteSheet = args['spriteSheet'] or
args['SpriteSheet']
if spriteSheet then
sprite = Sprite
:new(spriteSheet)
:setItem(mw.text.trim(args[1] or ""))
else
sprite = require([[Module:InventorySlot]]).Decode(args[1])
end
end
if args['small'] or args['Small'] then
sprite:SetSize(16)
else
sprite:SetSize(args['size'] or args['Size'] or 32)
end
local name = args['name'] or args['Name'] or args['title'] or args['Title']
if name and #name ~= 0 then
sprite:SetTitle(name)
end
local lore = args['lore'] or args['Lore'] or args['text'] or args['Text']
if lore and #lore ~= 0 then
sprite:SetLore(lore)
end
local hideTooltip = args['hideToolTip'] or args['hideTooltip'] or args['HideToolTip'] or args['HideTooltip']
if hideTooltip then
sprite:HideTooltip()
end
local inline = args['inline'] or args['Inline']
local spriteDiv
local parentDiv = mw.html.create("span"):css("position","relative")
if inline ~= 'false' then
spriteDiv = sprite:GenerateHTML("span")
spriteDiv:css("display","inline-block")
spriteDiv:css("vertical-align","middle")
else
spriteDiv = sprite:GenerateHTML()
end
local count = tonumber(args['count']) or tonumber(args['Count']) or string.match(tostring(args['count']),'%?') or string.match(tostring(args['Count']),'%?') or 1
if count ~= 1 then
local countSpan = parentDiv:tag("span"):wikitext(count)
countSpan:addClass("invslot-stacksize")
end
local enchanted = args['enchanted'] or args['Enchanted']
if enchanted == 'true' then
spriteDiv:addClass("enchanted")
end
local link = args['link'] or args['Link']
if link and #link ~= 0 then
if link:sub( 1,2 ) == '[[' then
parentDiv:wikitext(link:sub( 1,#link-2 ) .. '|')
elseif link:sub ( 1,1 ) == '[' then
parentDiv:wikitext(link:sub( 1,#link-1 ) .. '|')
end
end
parentDiv:node(spriteDiv)
if link and #link ~= 0 then
if link:sub( 1,2 ) == '[[' then
parentDiv:wikitext(']]')
elseif link:sub ( 1,1 ) == '[' then
parentDiv:wikitext(']')
end
end
return parentDiv
end
-- Make a single item
function p.SingleItem( f )
local args = f.args
if #args == 0 then
args = f:getParent().args or {""}
end
local sprite
local image = args['image'] or args['Image']
if image then
local Sprite = require([[Module:Sprite]])
sprite = Sprite.Custom:new(args[1], image)
else
local spriteSheet = args['spriteSheet'] or
args['SpriteSheet']
if spriteSheet then
sprite = Sprite
:new(spriteSheet)
:setItem(mw.text.trim(args[1] or ""))
else
sprite = require([[Module:InventorySlot]]).Decode(args[1])
end
end
if args['small'] or args['Small'] then
sprite:SetSize(16)
else
sprite:SetSize(args['size'] or args['Size'] or 32)
end
local name = args['name'] or args['Name'] or args['title'] or args['Title']
if name and #name ~= 0 then
sprite:SetTitle(name)
end
local lore = args['lore'] or args['Lore'] or args['text'] or args['Text']
if lore and #lore ~= 0 then
sprite:SetLore(lore)
end
local hideTooltip = args['hideToolTip'] or args['hideTooltip'] or args['HideToolTip'] or args['HideTooltip']
if hideTooltip then
sprite:HideTooltip()
end
local inline = args['inline'] or args['Inline']
local spriteDiv
spriteDiv = sprite:GenerateHTML("span")
spriteDiv:css("display","inline-block")
spriteDiv:css("vertical-align","middle")
spriteDiv:css("border-width","3px")
spriteDiv:css("border-style","solid")
spriteDiv:css("box-sizing","border-box")
if args['standard'] or args['Standard'] then
spriteDiv:css("background-color","#8B8B8B")
spriteDiv:css("border-color","#373737 #FFFFFF #FFFFFF #373737")
else
spriteDiv:css("background-color","#67AFD0")
spriteDiv:css("border-color","#1A536E #C0DEEB #C0DEEB #1A536E")
end
local count = tonumber(args['count']) or tonumber(args['Count']) or 1 or "?"
if count ~= 1 then
local countSpan = spriteDiv:tag("span"):wikitext(count)
countSpan:addClass("invslot-stacksize")
end
return spriteDiv
end
return p