aboutsummaryrefslogtreecommitdiff
path: root/gamemode/client/qpanels/prayers.lua
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2016-08-27 17:08:46 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2016-08-27 17:08:46 -0400
commit9adcb3c73a8d0e7ecfe66b30da630c6c2e67f03a (patch)
treed65b57e144317e5b49ccdd549b2f97c61d54bd1d /gamemode/client/qpanels/prayers.lua
parentd4f197a35c207c9891d3f4dc5e9708af48c935de (diff)
downloadartery-9adcb3c73a8d0e7ecfe66b30da630c6c2e67f03a.tar.gz
artery-9adcb3c73a8d0e7ecfe66b30da630c6c2e67f03a.tar.bz2
artery-9adcb3c73a8d0e7ecfe66b30da630c6c2e67f03a.zip
Moved prayers to their own system
Diffstat (limited to 'gamemode/client/qpanels/prayers.lua')
-rw-r--r--gamemode/client/qpanels/prayers.lua170
1 files changed, 170 insertions, 0 deletions
diff --git a/gamemode/client/qpanels/prayers.lua b/gamemode/client/qpanels/prayers.lua
new file mode 100644
index 0000000..bc955ce
--- /dev/null
+++ b/gamemode/client/qpanels/prayers.lua
@@ -0,0 +1,170 @@
+
+local refreshboundprayers
+local infopart
+local prayersheet
+
+local function displaydefaulthelp(panel)
+ local ll = vgui.Create("DLabel",panel)
+ ll:Dock(FILL)
+ ll:SetWrap(true)
+ ll:SetDark(true)
+ ll:SetText("Oh no! It looks like this dosen't have any help text yet!")
+end
+
+local function createprayericon(parrent,prayer,equiped,place)
+
+ local width = ScrW()
+ local height = ScrH()
+
+ local ret = vgui.Create("DButton",parrent)
+ ret:SetText(prayer)
+ ret:SetWrap(true)
+ ret:SetSize(64,64)
+ local prayertbl = ART.GetPrayerByName(prayer)
+ assert(prayertbl ~= nil, "Could not find an appropriate prayer!")
+ if prayertbl.Paint then
+ ret.Paint = prayertbl.Paint
+ end
+ if prayertbl.DoOnPanel then
+ prayertbl.DoOnPanel(ret)
+ end
+ if equiped then
+ ret.DoClick = function(self)
+ self:Remove()
+ ART.PrayerEquiped[place] = false
+ refreshboundprayers()
+ infopart:Remove()
+ infopart = vgui.Create("DPanel")
+ infopart:SetSize( (width / 4) - 10, height / 3)
+ infopart:SetPos(0, height * 2 / 3)
+ prayersheet:Add(infopart)
+ end
+ else
+ ret:Droppable("PrayerBind")
+ ret.PrayerName = prayer
+ ret:SetSize(64,64)
+ ret.DoClick = function(self)
+ infopart:Remove()
+ infopart = vgui.Create("DPanel")
+ infopart:SetSize( (width / 4) - 10, height / 3)
+ prayersheet:Add(infopart)
+ local rettbl = ART.GetPrayerByName(prayer)
+ if rettbl.DisplayHelp ~= nil then
+ rettbl.DisplayHelp(infopart)
+ else
+ displaydefaulthelp(infopart)
+ end
+ end
+ end
+ return ret
+end
+
+local function createreceiver(parrent,num)
+ local prayerbut = vgui.Create( "DPanel", parrent )
+ local prayerlabel = vgui.Create("DLabel",prayerbut)
+ prayerlabel:SetText( "F" .. num )
+ prayerlabel.Paint = function( self, w, h ) end
+ prayerlabel:SetWrap(true)
+ prayerlabel:SetDark(true)
+ prayerlabel:Dock(FILL)
+ prayerbut:Dock(FILL)
+ prayerbut:Receiver( "PrayerBind", function( self, tableOfDroppedPanels, isDropped, menuIndex, mouseX, mouseY )
+ if not isDropped then return end
+ local pname = tableOfDroppedPanels[1].PrayerName
+ print("Prayer name:")
+ print(pname)
+ ART.PrayerEquiped[num] = pname
+ print("Prayer bound to " .. num)
+ prayerbut:Remove()
+ createprayericon(parrent,pname,true,num)
+ end)
+end
+
+local function displayboundprayers(panel)
+
+ local width = ScrW()
+ local height = ScrH()
+
+ local prayerbindgrid = nil
+
+ refreshboundprayers = function()
+
+ if prayerbindgrid ~= nil then prayerbindgrid:Remove() end
+
+ prayerbindgrid = vgui.Create("DGrid")
+ prayerbindgrid:SetPos(height * (2 / 3),5)
+ prayerbindgrid:SetSize((width / 4) - 20, height / 3)
+ prayerbindgrid:SetColWide(64)
+ prayerbindgrid:SetRowHeight(64)
+ function prayerbindgrid:Paint(w,h)
+ draw.RoundedBox( 8, 0, 0, w, h, Color( 0, 255, 0 ) )
+ end
+
+ for k,v in pairs(ART.PrayerEquiped) do
+ local but = vgui.Create( "DPanel", prayerbindgrid )
+ but:SetSize(64, 64)
+ if v ~= false then
+ createprayericon(but,v,true,k)
+ else
+ createreceiver(but,k)
+ end
+ prayerbindgrid:AddItem(but)
+ end
+ panel:Add(prayerbindgrid)
+ end
+ refreshboundprayers()
+end
+
+ART.RegisterInventorySheet(function()
+
+ local width = ScrW()
+ local height = ScrH()
+
+ prayersheet = vgui.Create( "DListLayout")
+
+ local prayergridscroll = vgui.Create("DScrollPanel")
+ prayergridscroll:SetSize( (width / 4) - 20, height / 3 )
+ prayergridscroll:SetPos( 5, 5 )
+ prayersheet:Add(prayergridscroll)
+ local prayergrid = vgui.Create( "DGrid", prayergridscroll )
+ prayergrid:SetPos( 5 , 5 )
+ prayergrid:Dock(FILL)
+
+ prayergrid:SetCols( (width / 4) / 64 )
+ prayergrid:SetColWide( 64 )
+ prayergrid:SetRowHeight(64)
+ prayergridscroll:AddItem(prayergrid)
+
+ for k,v in pairs(ART.MyPrayer) do
+ print("Displaying prayer:" .. k)
+ print("Type:" .. type(k))
+ if k == "" then
+ ART.MyPrayer[k] = nil
+ end
+ local but = createprayericon(prayergrid,k,false,nil)
+ prayergrid:AddItem(but)
+ end
+
+ displayboundprayers(prayersheet)
+
+ infopart = vgui.Create("DPanel")
+ infopart:SetSize( (width / 4) - 10, height / 3)
+ infopart:SetPos(0, height * 2 / 3)
+ prayersheet:Add(infopart)
+
+ return "Prayers", prayersheet, "icon16/tick.png"
+end)
+
+hook.Add("Think","art_prayer_keybinds",function()
+ local mapping = {
+ KEY_F1,
+ KEY_F2,
+ KEY_F3,
+ KEY_F4,
+ }
+ for k,v in pairs(mapping) do
+ if input.IsKeyDown(v) and ART.PrayerEquiped[k] then
+ ART.GetPrayerByName(ART.PrayerEquiped[k]).Pray()
+ end
+ end
+end)