diff options
Diffstat (limited to 'gamemode/client/qtabs/cl_qinventory.lua')
| -rw-r--r-- | gamemode/client/qtabs/cl_qinventory.lua | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/gamemode/client/qtabs/cl_qinventory.lua b/gamemode/client/qtabs/cl_qinventory.lua new file mode 100644 index 0000000..a3f8a16 --- /dev/null +++ b/gamemode/client/qtabs/cl_qinventory.lua @@ -0,0 +1,69 @@ +--[[ + One of the tabs in the inventory +]] + +local inv = nrequire("inventory/inventory.lua") +local itm = nrequire("item.lua") + +local q = {} + +local known_inventories = {} +local inventory_frames = {} + +net.Receive("art_ObserveInventory",function() + local id = net.ReadUInt(32) + local inv_type = net.ReadString() + print("Got inv type", inv_type,"id",id) + local inital_data = net.ReadData(net.ReadUInt(32)) + known_inventories[id] = inv.CreateInventoryFromData(inv_type,initaldata) +end) + +net.Receive("art_UpdateInventory",function() + local id = net.ReadUInt(32) + local isput = net.ReadBool() + local position = net.ReadTable() + if isput then + local item_name = net.ReadString() + local item_data = net.ReadData(net.ReadUInt(32)) + local item = itm.GetItemFromData(item_name,item_data) + known_inventories[id]:Put(position,item) + else + known_inventories[id]:Remove(position) + end +end) + +net.Receive("art_CloseInventory",function() + local id = net.ReadUInt(32) + known_inventories[id] = nil + if inventory_frames[id] then + inventory_frames[id]:Close() + inventory_frames[id] = nil + end +end) + +local width,height = (ScrW() / 4) - 10, ScrH() +local iconsize = width / 5 + + +q.CreateInventorySheet = function(dpanel_parent) + --assert(known_inventories[watch_id] ~= nil,"Attempted to watch an inventory that dosn't exist!") + --Display the equipment inventories + local invsheet = vgui.Create( "DPropertySheet", dpanel_parent ) + invsheet:Dock( FILL ) + + for k,v in pairs(known_inventories) do + local tpanel = vgui.Create( "DPanel", invsheet ) + tpanel.Paint = function( self, w, h ) + draw.RoundedBox( 4, 0, 0, w, h, Color( 0, 128, 255 ) ) + end + if v.DrawOnDPanel then + local prox = v:DrawOnDPanel(tpanel) + known_inventories[k]:AddObserver(prox) + end + invsheet:AddSheet( v.Name, tpanel, "icon16/tab.png" ) + end + + return invsheet +end + +return q |
