1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
--[[
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 = {}
local invsheet
local drawsheeton = function(id,inventory)
if invsheet == nil then return end
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 inventory.DrawOnDPanel then
print("Has drawondpanel")
local prox = inventory:DrawOnDPanel(tpanel)
print("Prox returned was",prox)
PrintTable(prox)
known_inventories[id]:AddObserver(prox)
print("Oservers is now")
PrintTable(known_inventories[id].observers)
end
invsheet:AddSheet( inventory.Name, tpanel, "icon16/tab.png" )
end
net.Receive("art_ObserveInventory",function()
local id = net.ReadUInt(32)
local inv_type = net.ReadString()
print("Got inv type", inv_type,"id",id)
local datalen = net.ReadUInt(32)
local inital_data = net.ReadData(datalen)
local ownent = net.ReadEntity()
local tinv = inv.CreateInventoryFromData(inv_type,inital_data)
tinv.owner = ownent
tinv.id = id
print("Created new inventory:")
PrintTable(tinv)
known_inventories[id] = tinv
drawsheeton(id,tinv)
print("known inventories is now:")
PrintTable(known_inventories)
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()
print("Putting ", item_name, "into inventory ",id, " at position")
PrintTable(position)
local item_data = net.ReadData(net.ReadUInt(32))
local item = itm.GetItemFromData(item_name,item_data)
known_inventories[id]:Put(position,item)
print("Inventorie's observers:")
PrintTable(known_inventories[id].observers)
print("Inventory is now")
PrintTable(known_inventories[id])
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)
q.CreateInventorySheet = function(dpanel_parent)
--assert(known_inventories[watch_id] ~= nil,"Attempted to watch an inventory that dosn't exist!")
--Display the equipment inventories
invsheet = vgui.Create( "DPropertySheet", dpanel_parent )
invsheet:Dock( FILL )
for k,v in pairs(known_inventories) do
drawsheeton(k,v)
--[[
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
concommand.Add("PrintKnownInventories",function(ply,cmd,args)
PrintTable(known_inventories)
end)
return q
|