aboutsummaryrefslogtreecommitdiff
path: root/gamemode/client/qtabs/cl_qinventory.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/client/qtabs/cl_qinventory.lua')
-rw-r--r--gamemode/client/qtabs/cl_qinventory.lua51
1 files changed, 46 insertions, 5 deletions
diff --git a/gamemode/client/qtabs/cl_qinventory.lua b/gamemode/client/qtabs/cl_qinventory.lua
index e60424f..e4dfaa8 100644
--- a/gamemode/client/qtabs/cl_qinventory.lua
+++ b/gamemode/client/qtabs/cl_qinventory.lua
@@ -3,13 +3,44 @@
]]
local inv = nrequire("inventory/inventory.lua")
local itm = nrequire("item.lua")
+--local state = nrequire("cl_state.lua")
local q = {}
local known_inventories = {}
local inventory_frames = {}
local invsheet
+
+local drawfloatinginventory = function(id, inventory)
+ print("Drawing a floating inventory!")
+ local frame = vgui.Create("DFrame")
+ frame:SetPos( 100, 100 )
+ frame:SetSize( 300, 200 )
+ frame:SetTitle( "My new Derma frame" )
+ frame:SetDraggable( true )
+ local panel = vgui.Create("DPanel",frame)
+ panel:Dock(FILL)
+ if inventory.DrawOnDPanel then
+ local prox = inventory:DrawOnDPanel(panel)
+ frame.id = known_inventories[id]:AddObserver(prox)
+ else
+ error("Inventory needs a DrawOnDPanel method!")
+ end
+ frame:MakePopup()
+ frame.OnClose = function(self)
+ print("Closeing chest id", id)
+ print("entity is", known_inventories[id].Owner)
+ known_inventories[id]:RemoveObserver(self.id)
+ net.Start("closechestinv")
+ net.WriteEntity(known_inventories[id].Owner)
+ net.SendToServer()
+ known_inventories[id] = nil
+ self:Remove()
+ end
+end
+
local drawsheeton = function(id,inventory)
+ print("Drawing an inventory on a sheet!")
if invsheet == nil then return end
local tpanel = vgui.Create( "DPanel", invsheet )
--tpanel.Paint = function( self, w, h )
@@ -34,15 +65,20 @@ net.Receive("art_ObserveInventory",function()
local datalen = net.ReadUInt(32)
local inital_data = net.ReadData(datalen)
local ownent = net.ReadEntity()
+ print("Owning ent of this inventory is", ownent)
+ assert(known_inventories[id] == nil, "Trying to observe the same inventory twice!",id)
local tinv = inv.CreateInventoryFromData(inv_type,inital_data)
- tinv.owner = ownent
+ 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)
+ if id > 10 then
+ drawfloatinginventory(id,tinv)
+ hook.Call("OnSpawnMenuOpen")
+ else
+ drawsheeton(id,tinv)
+ end
end)
net.Receive("art_UpdateInventory",function()
@@ -81,7 +117,12 @@ q.CreateInventorySheet = function(dpanel_parent)
invsheet:Dock( FILL )
for k,v in pairs(known_inventories) do
- drawsheeton(k,v)
+ print("This inventory id in known_inventories is", k)
+ if k <= 10 then
+ drawsheeton(k,v)
+ else
+ drawfloatinginventory(k,v)
+ end
--[[
local tpanel = vgui.Create( "DPanel", invsheet )
tpanel.Paint = function( self, w, h )