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)