diff options
Diffstat (limited to 'gamemode/inventorysystem/abilities/cl_abilities.lua')
| -rw-r--r-- | gamemode/inventorysystem/abilities/cl_abilities.lua | 96 |
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 |
