summaryrefslogtreecommitdiff
path: root/gamemode/client/cl_inventory.lua
blob: 75786097d0a0d752fadb9ebc059741931cfb6252 (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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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( invxsize, invysize )
  frame:SetTitle( "Inventory" )
  frame:MakePopup()
  frame:SetPos(scrx-invxsize,0)
  frame:SetKeyboardInputEnabled(true)
  frame:ShowCloseButton(false)
  frame.OnKeyCodePressed = function(self, key)
    if(key == KEY_Q) then
      frame:Close()
    end
  end

  local tabsheet = vgui.Create("DPropertySheet", frame)
  tabsheet:Dock(FILL)

  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
    if(v == 0) then
      continue
    end
    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)
      selection:SetTooltip(GMS.Resources[k].Description)
    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

  return frame
end

local invpanel = nil
function GM:OnSpawnMenuOpen()

  if(invpanel == nil) then
    invpanel = createPanel()
    return
  end
  if(! invpanel:IsValid()) then
    invpanel = createPanel()
    return
  end
end

function GM:ReloadSpawnMenu()
  if(invpanel == nil) then
    return
  end
  if(!invpanel:IsValid()) then
    return
  end
  if(invpanel != nil) then
    invpanel:Close()
    invpanel = createPanel()
    return
  end
end

function GM:OnSpawnMenuClose()

end

function GM:SpawnMenuEnabled()
	return false
end