Module:InventorySlot: Difference between revisions

Made gm4 items easier
(Should now add `invslot` to html item slots)
(Made gm4 items easier)
Line 3: Line 3:
local UISlot = {}
local UISlot = {}


local Sprite = require([[Module:Sprite]]):new("inventory")
local sprite = require([[Module:Sprite]])
local Sprites = {
minecraft = sprite:new("inventory"),
gm4 = sprite:new("gm4")
}


function UISlot:new(item, large)
function UISlot:new(item, large)
Line 13: Line 17:
end
end


-- Sets the item of this UISlot. If 'raw html' (=first char == '<') then
-- this will return said html wrapped instead of doing a item lookup
function UISlot:SetItem(item)
function UISlot:SetItem(item)
if string.sub(item or "",1,1) == '<' then
if string.sub(item or "",1,1) == '<' then
Line 20: Line 26:
end
end


return self
end
function UISlot.Decode(item)
if item == "" then item = nil end
if item == "" then item = nil end
self.__sprite = item and Sprite:Item(item) --nil if item = nil else get sprite
if item then
return self
-- split at ':'
local t={}
for str in string.gmatch(item, "([^:]+)") do
table.insert(t, str)
end
if #t == 1 then
return Sprites.minecraft:Item(item)
elseif #t == 2 then
local spr = Sprites[mw.text.trim(t[1])]
if spr then
return spr:Item(mw.text.trim(t[2]))
else
error("Unknown namespace: " .. mw.text.trim(t[1]))
end
else
error("Got unexpected amount of ':', namely:" .. (#t - 1))
end
 
else
return nil
end
end
end


-- Append the HTML for an item
function UISlot.Item(item, large, html)
function UISlot.Item(item, large, html)
return UISlot:new(item, large):GenerateHTML(html)
return UISlot:new(item, large):GenerateHTML(html)
end
end


-- Generate the HTML for a grid of items
function UISlot.Call(items, width, height, size)
function UISlot.Call(items, width, height, size)
local w = width or 1
local w = width or 1
Line 43: Line 78:
end
end


-- Convert a 2d list of itemnames to an HTML grid
function UISlot.Grid(items, large)
function UISlot.Grid(items, large)
local root = mw.html.create( "table" ):addClass("invgrid")
local root = mw.html.create( "table" ):addClass("invgrid")
Bureaucrats, emailconfirmed, Interface administrators, staff, Administrators, translation-admin, translator, Widget editors
154

edits