From 6f6cce0561c19e7af14bcc6e6b1c7de2d5efc530 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Fri, 29 Apr 2016 20:30:52 -0400 Subject: a halfway commit to show scott --- gamemode/client/cl_inventory.lua | 81 +++++++++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 14 deletions(-) (limited to 'gamemode/client/cl_inventory.lua') diff --git a/gamemode/client/cl_inventory.lua b/gamemode/client/cl_inventory.lua index 9e18040..94690ac 100644 --- a/gamemode/client/cl_inventory.lua +++ b/gamemode/client/cl_inventory.lua @@ -1,29 +1,82 @@ print("Custom inventory loaded") +--Some calculations to draw the inventory nicely +local scrx = ScrW() +local scry = ScrH() +--Make the menu 30% of the x to the closest 64 and 100% of the y +local invxadj = ((scrx*0.4)%64) +local invxsize = (scrx*0.40)-invxadj-38 --no idea why the 38 works, but it does +local invysize = scry + +local function createMenuFor(menu, tbl) + for k,v in pairs(tbl) do + if(isfunction(v)) then --This is a dead-end, add the menu + local thisoption = menu:AddOption(k,v) + else --Otherwise it should be a table, recursively call to create + local submenu = menu:AddSubMenu(k) + createMenuFor(submenu,v) + end + end +end + local function createPanel() local frame = vgui.Create( "DFrame" ) - frame:SetSize( 300, 300 ) + frame:SetSize( invxsize, invysize ) frame:SetTitle( "Inventory" ) frame:MakePopup() - frame:Center() + frame:SetPos(scrx-invxsize,0) - local layout = vgui.Create( "DTileLayout", frame ) - layout:SetBaseSize( 32 ) -- Tile size - layout:Dock( FILL ) + local tabsheet = vgui.Create("DPropertySheet", frame) + tabsheet:Dock(FILL) - //Draw a background so we can see what it's doing - --layout:SetDrawBackground( true ) - --layout:SetBackgroundColor( Color( 0, 100, 100 ) ) + local invtab = vgui.Create("DPanel",tabsheet) + tabsheet:AddSheet( "Inventory", invtab, "icon16/database.png" ) + local equiptab = vgui.Create("DPanel",tabsheet) + tabsheet:AddSheet( "Equipment", equiptab, "icon16/user.png" ) + local proptab = vgui.Create("DPanel",tabsheet) + tabsheet:AddSheet( "Props", proptab, "icon16/wrench.png" ) + if(LocalPlayer():IsAdmin()) then + local admintab = vgui.Create("DPanel",tabsheet) + tabsheet:AddSheet("Admin", admintab, "icon16/bullet_star.png") + end + + --Inventory + local layout = vgui.Create( "DTileLayout", invtab ) + layout:SetBaseSize( 64 ) -- Tile size + layout:Dock( FILL ) layout:MakeDroppable( "unique_name" ) -- Allows us to rearrange children + PrintTable(Resources) for k, v in SortedPairs( Resources ) do - layout:Add( Label( v .. k) ) - end - /* - for i = 1, 32 do - layout:Add( Label( " Label " .. i ) ) + local selection = vgui.Create("DImageButton") + if(GMS.Resources[k] == nil) then --This resource is not registered! + selection:SetImage("vgui/avatar_default") + print("Resource:" .. k .. " not registed! This might be a bug!") + continue + elseif(GMS.Resources[k].Icon == nil) then + selection:SetImage("vgui/avatar_default") + print("Resource:" .. k .. " does not have an .Icon field! This might be a bug!") + continue + else + selection:SetImage(GMS.Resources[k].Icon) + end + + selection:SetSize(64,64) + selection.DoClick = function() + if(GMS.Resources[k].UniqueData) then + print("We should expand menu to show all uniqueid's") + else + if(GMS.Resources[k].Actions == nil) then + print("gamemode/client/cl_inventory.lua: Looking for actions for " .. k .. " but found nil!") + return + end + local menu = vgui.Create("DMenu") + createMenuFor(menu,GMS.Resources[k].Actions) + menu:Open() + end + end + layout:Add( selection ) end - */ end local invpanel = nil -- cgit v1.2.3-70-g09d2