aboutsummaryrefslogtreecommitdiff
path: root/gamemode/inventorysystem/abilities/cl_abilities.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/inventorysystem/abilities/cl_abilities.lua')
-rw-r--r--gamemode/inventorysystem/abilities/cl_abilities.lua96
1 files changed, 96 insertions, 0 deletions
diff --git a/gamemode/inventorysystem/abilities/cl_abilities.lua b/gamemode/inventorysystem/abilities/cl_abilities.lua
new file mode 100644
index 0000000..e28db63
--- /dev/null
+++ b/gamemode/inventorysystem/abilities/cl_abilities.lua
@@ -0,0 +1,96 @@
+
+local pray = {}
+
+local explain
+pray.activeprayers = {}
+function pray:DrawOnDPanel(panel)
+ print("Attempted to draw prayer panel")
+ --Active grid
+ local agrid = vgui.Create("DGrid",panel)
+ agrid:SetCols(4)
+ local w = ((ScrW() / 4) - 10) / 4
+ agrid:SetHeight(w)
+ agrid:SetColWide(w)
+ agrid:SetRowHeight(w)
+ for i=1,4 do
+ local rec = vgui.Create("DImageButton",agrid)
+ rec:SetText("F"..i)
+ rec:SetSize(w,w)
+ rec.DoClick = function(s)
+ local ap = pray.activeprayers[i]
+ explain:SetText(ap ~= nil and ap.Description or "Select a prayer")
+ end
+ rec:Receiver("prayer",function(s,tbl,dropped,mi,x,y)
+ if not dropped then return end
+ pray.activeprayers[i] = tbl[1].item
+ if tbl[1].item == nil then
+ print("Failed to get item, tbl was")
+ PrintTable(tbl)
+ error("Failed to get item")
+ end
+ if tbl[1].item.DoOnPanel then
+ tbl[1].item:DoOnPanel(rec)
+ end
+ end,{})
+ agrid:AddItem(rec)
+ end
+ agrid:Dock(TOP)
+ --Explanation of spells
+ local explainpanel = vgui.Create("DPanel",panel)
+ explainpanel:SetHeight(w*2)
+ explainpanel:Dock(TOP)
+ explainpanel:SetText("This panel will explain information about a hovered skill")
+ explain = vgui.Create("DLabel",explainpanel)
+ explain:Dock(FILL)
+ explain:SetDark(true)
+ --All spells we know
+ local scroll = vgui.Create( "DScrollPanel", panel )
+ scroll:Dock( FILL )
+ local grid = vgui.Create("DGrid",scroll)
+ grid:SetCols(4)
+ grid:SetColWide(w)
+ grid:SetRowHeight(w)
+ local function drawprayer(prayer)
+ local rec = vgui.Create("DImageButton",grid)
+ rec:SetText(prayer.Name)
+ rec:SetSize(w,w)
+ if(prayer.DoOnPanel) then
+ prayer:DoOnPanel(rec)
+ end
+ rec.item = prayer
+ rec:Droppable("prayer")
+ grid:AddItem(rec)
+ end
+
+ for k,v in pairs(self.track) do
+ drawprayer(v)
+ end
+
+ local observer = {}
+ observer.Put = function(obs,pos,item)
+ print("Prayer observer got request to put")
+ debug.Trace()
+ drawprayer(item)
+ end
+ observer.Remove = function(obs,pos,item)
+ print("I should never remove a prayer!")
+ end
+ return observer
+end
+
+--Rebind f1, f2, f3, f4 to prayers
+local prayerhooks = {
+ ["gm_showhelp"] = 1,
+ ["gm_showteam"] = 2,
+ ["gm_showspare1"] = 3,
+ ["gm_showspare2"] = 4
+}
+hook.Add("PlayerBindPress", "pray_hook", function( ply, bind, pressed )
+ local phn = prayerhooks[bind]
+ if phn == nil then return end
+ local pap = pray.activeprayers[phn]
+ if pap == nil then return end
+ pap:Pray()
+end)
+
+return pray