aboutsummaryrefslogtreecommitdiff
path: root/gamemode/client/qtabs/cl_qinventory.lua
blob: e60424f321fb7492758ea7d2096bcbb370227708 (plain)
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