aboutsummaryrefslogtreecommitdiff
path: root/gamemode/client
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/client')
-rw-r--r--gamemode/client/cl_inventory.lua64
-rw-r--r--gamemode/client/qpanels/inventory.lua194
-rw-r--r--gamemode/client/qpanels/prayers.lua170
-rw-r--r--gamemode/client/qpanels/quests.lua31
-rw-r--r--gamemode/client/qpanels/skills.lua10
-rw-r--r--gamemode/client/qtabs/cl_qinventory.lua1
6 files changed, 52 insertions, 418 deletions
diff --git a/gamemode/client/cl_inventory.lua b/gamemode/client/cl_inventory.lua
index 92eae94..4e2545d 100644
--- a/gamemode/client/cl_inventory.lua
+++ b/gamemode/client/cl_inventory.lua
@@ -8,7 +8,7 @@
3 - Skills
4 - Quests
]]
-local qinv = nrequire("cl_qinventory.lua")
+--local qinv = nrequire("cl_qinventory.lua")
local state = nrequire("cl_state.lua") --Holds weather or not player is in inventory
local itm = nrequire("core/inventory/common/items.lua")
--local qpray = nrequire("cl_qprayers.lua")
@@ -38,6 +38,8 @@ local creditslabel
local droppanel --Dpanel to drop things on when they are dropped, should be the backmost panel, and cover the entire screen.
inv.tabsheet = nil
+local clt = nrequire("cl_invtracker.lua")
+
local player_data --The data the player needs to show the q panel
net.Receive("art_load_player_data",function()
--print("Got player data")
@@ -49,6 +51,34 @@ net.Receive("art_load_player_data",function()
--print("Credits was", credits)
end)
+local function CreateSheetTree(tabs,dpropertysheet)
+ print("Createing sheet tree!")
+ PrintTable(tabs)
+ for k,v in pairs(tabs) do
+ if type(k) == "string" then
+ print("Makeing inventory ", k)
+ local tsheet = vgui.Create( "DPropertySheet", dpropertysheet )
+ dpropertysheet:AddSheet(k,tsheet,"icon16/user.png")
+ CreateSheetTree(v,tsheet)
+ elseif type(k) == "number" then
+ print("Makeing inventory number ", k)
+ local tsheet = vgui.Create("DPanel")
+ dpropertysheet:AddSheet(v.Name,tsheet,"icon16/user.png")
+ v:DrawOnDPanel(tsheet)
+ else
+ error("k was not a number or string, it was a " .. type(k))
+ end
+ end
+ --local invsheet = qinv.CreateInventorySheet(inv.tabsheet)
+ --qpray.CreatePrayerSheet(tabsheet)
+ --invsheet.id = #qtabs + 1
+ --qtabs[#qtabs + 1] = invsheet
+ --prasheet.id = #qtabs + 1
+ --qtabs[#qtabs + 1] = prasheet
+ --inv.tabsheet:AddSheet("Inventory",invsheet,"icon16/user.png")
+ --tabsheet:AddSheet("Prayers",prasheet,"icon16/user.png")
+end
+
local function BuildInventory()
--print("Building inventory")
if qframe and IsValid(qframe) then return end
@@ -80,17 +110,10 @@ local function BuildInventory()
creditstext:SetText("Credits:")
creditstext:SetPos(100,5)
- inv.tabsheet = vgui.Create("DPropertySheet",qframe)
- inv.tabsheet:Dock(FILL)
+ local initalsheet = vgui.Create("DPropertySheet",qframe)
+ initalsheet:Dock(FILL)
- local invsheet = qinv.CreateInventorySheet(inv.tabsheet)
- --qpray.CreatePrayerSheet(tabsheet)
- invsheet.id = #qtabs + 1
- qtabs[#qtabs + 1] = invsheet
- --prasheet.id = #qtabs + 1
- --qtabs[#qtabs + 1] = prasheet
- inv.tabsheet:AddSheet("Inventory",invsheet,"icon16/user.png")
- --tabsheet:AddSheet("Prayers",prasheet,"icon16/user.png")
+ CreateSheetTree(clt.known_inventories,initalsheet)
end
@@ -139,13 +162,20 @@ local viewdistance = 100
local rotatespeed = 65
local bone = nil
local previousheadscale = Vector(1,1,1)
+local toggle_arteryview = true
hook.Add("CalcView","ArteryInventoryView",function(ply,pos,ang,fov,nearz,farz)
+ if not toggle_arteryview then return end
if bone == nil then
bone = LocalPlayer():LookupBone("ValveBiped.Bip01_Head1")
end
local view = {}
--view.origin = LocalPlayer():GetBonePosition(bone) + LocalPlayer():GetUp() * 2
- view.origin = pos
+ local tr = util.TraceLine({
+ start = pos,
+ endpos = (ang:Forward() * -100) + pos,
+ filter = LocalPlayer()
+ })
+ view.origin = tr.HitPos or (ang:Forward() * -100) + pos
if state.invopen then
local trot = math.rad(CurTime() * rotatespeed)
local xoff = viewdistance * math.sin(trot)
@@ -161,9 +191,17 @@ hook.Add("CalcView","ArteryInventoryView",function(ply,pos,ang,fov,nearz,farz)
else
LocalPlayer():ManipulateBoneScale(bone,previousheadscale)
end
- view.drawviewer = state.invopen
+ view.drawviewer = true--state.invopen
return view
end)
+concommand.Add("delete_inventory",function(ply,cmd,args)
+ qframe = nil
+end)
+
+concommand.Add("toggle_artery_view",function(ply,cmd,args)
+ toggle_arteryview = not toggle_arteryview
+end)
+
return inv
diff --git a/gamemode/client/qpanels/inventory.lua b/gamemode/client/qpanels/inventory.lua
deleted file mode 100644
index 4dc5075..0000000
--- a/gamemode/client/qpanels/inventory.lua
+++ /dev/null
@@ -1,194 +0,0 @@
--- do return end
--- local invfuncs
--- invfuncs = ART.invfuncs
--- --invfuncs = include("../gamemodes/artery/gamemode/shared/inventory_common.lua")
--- --invfuncs = include("../shared/inventory_common.lua")
--- assert(invfuncs ~= nil, "Dependency failed")
---
--- 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 DrawBackpackOnDPanel(dp, backpack, backpacknum, tent)
--- local width = ScrW()
--- local height = ScrH()
--- local slotsize = math.Round(width / 32)
--- local backgrid = vgui.Create( "DGrid", dp )
--- backgrid:SetPos( 10, 30 )
--- backgrid:SetCols( backpack[2][1] )
--- backgrid:SetColWide( backpack[2][2] )
--- backgrid:Dock(FILL)
--- for i = 1,#(backpack[1]) do
--- for j = 1,#(backpack[1][i]) do
--- local item = backpack[1][j][i]
--- if type(backpack[1][j][i]) == "table" then
--- local itemwidth = 0
--- for _,l in pairs(item.Shape) do
--- itemwidth = math.Max(itemwidth,#l)
--- end
--- local itemheight = #item.Shape
--- local invicon = vgui.Create( "DImageButton", dp )
--- invicon:SetSize(slotsize * itemwidth, slotsize * itemheight)
--- invicon:SetPos(slotsize * (i - 1), slotsize * (j - 1))
--- invicon:SetText(item.Name)
--- if item.Tooltip then
--- invicon:SetTooltip(item.Tooltip)
--- end
--- if item.Paint then
--- invicon.Paint = item.Paint
--- end
--- if item.DoOnPanel then
--- item.DoOnPanel(invicon)
--- end
--- --invicon.Paint = function(self, w, h) draw.RoundedBox(4, 0,0,w,h,Color(0,100,0)) end
--- invicon.DoClick = function()
--- if not item.GetOptions then return end
--- local menu = vgui.Create("DMenu")
--- createMenuFor(menu,item:GetOptions())
--- menu:Open()
--- end
--- invicon.Item = item
--- invicon.invpos = {j,i}
--- invicon.ent = tent
--- invicon.backpacknum = backpacknum
--- invicon:Droppable("Inventory")
--- elseif not backpack[1][j][i] then
--- local emptyslot = vgui.Create("DPanel", dp)
--- emptyslot:SetSize(slotsize,slotsize)
--- emptyslot:SetPos(slotsize * (i - 1), slotsize * (j - 1))
--- --emptyslot.Paint = function(self, w, h) draw.RoundedBox(4, 0,0,w,h,Color(0,0,100)) end
--- emptyslot:Receiver( "Inventory", function( receiver, tableOfDroppedPanels, isDropped, menuIndex, mouseX, mouseY )
--- if not isDropped then return end
--- local icon = tableOfDroppedPanels[1]
--- local item = icon.Item
--- local curpos = icon.invpos
--- --Set the shape it was at to false
--- if not icon.wasequiped and icon.ent == tent then
--- assert(curpos ~= nil, "print curpos was nil when not equiped")
--- for k = 1,#item.Shape do
--- for l = 1,#(item.Shape[k]) do
--- if k == 1 and l == 1 then continue end
--- backpack[1][curpos[1] + k - 1][curpos[2] + l - 1] = false
--- end
--- end
--- backpack[1][curpos[1]][curpos[2]] = false
--- end
--- if invfuncs.CanFitInBackpack(backpack,j,i,item) then
--- local fromtbl = icon.invpos
--- local wasequiped = icon.wasequiped
--- local ondropped = icon.ondropped
--- if ondropped then
--- ondropped(backpacknum,j,i,item)
--- elseif wasequiped then
--- net.Start("unequipitem")
--- net.WriteString(wasequiped)
--- net.WriteUInt(backpacknum,16)
--- net.WriteUInt(i,16)
--- net.WriteUInt(j,16)
--- net.SendToServer()
--- else
--- net.Start("moveitem")
--- net.WriteEntity(icon.ent) -- from ent
--- net.WriteEntity(tent) -- to ent
--- net.WriteUInt(icon.backpacknum,16) -- from backpack number
--- net.WriteUInt(backpacknum,16) -- to backpack number
--- net.WriteUInt(fromtbl[1],16) -- From position
--- net.WriteUInt(fromtbl[2],16)
--- net.WriteUInt(j,16) -- To position
--- net.WriteUInt(i,16)
--- net.SendToServer()
--- if item.onEquip ~= nil then
--- item:onEquip(LocalPlayer())
--- end
--- end
--- end
--- end, {} )
--- end
--- end
--- end
--- end
---
--- local invsheetfunc = function()
--- local width = ScrW()
--- local height = ScrH()
---
---
--- local invsheet = vgui.Create( "DPanel" )
---
--- invsheet.Paint = function( self, w, h ) end
---
--- --Display gear
--- local slotsize = math.Round(width / 32)
--- local displaypos = {
--- ["Head"] = {(width / 8) - slotsize, 25},
--- ["Body"] = {(width / 8) - slotsize, slotsize + 26},
--- ["Legs"] = {(width / 8) - slotsize, (slotsize * 2) + 27},
--- ["Boots"] = {(width / 8) - slotsize, (slotsize * 3) + 28},
--- ["Gloves"] = {(width / 8) + (slotsize), (slotsize * 2) + 27},
--- ["Left"] = {(width / 8) - (1.5 * slotsize), (slotsize * 4) + 29},
--- ["Right"] = {(width / 8) - (0.5 * slotsize), (slotsize * 4) + 29}
--- }
--- for k,v in pairs (LocalPlayer().Inventory.Equiped) do
--- if v == false then
--- local eqslot = vgui.Create( "DPanel", invsheet )
--- eqslot:SetSize( slotsize, slotsize )
--- eqslot:SetPos(displaypos[k][1],displaypos[k][2])
--- eqslot:Receiver( "Inventory", function( receiver, tableOfDroppedPanels, isDropped, menuIndex, mouseX, mouseY )
--- if not isDropped then return end
--- print("Attempting to equip")
--- local icon = tableOfDroppedPanels[1]
--- local item = icon.Item
--- if item.Equipable == k then
--- net.Start("equipitem")
--- net.WriteUInt(icon.backpacknum,16) -- Backpack number
--- local fromtbl = icon.invpos
--- net.WriteUInt(fromtbl[1],16) -- From position
--- net.WriteUInt(fromtbl[2],16)
--- net.WriteString(k)
--- net.SendToServer()
--- end
--- end, {} )
--- else
--- local eqslot = vgui.Create("DImageButton",invsheet)
--- eqslot:SetSize(slotsize,slotsize)
--- eqslot:SetPos(displaypos[k][1],displaypos[k][2])
--- if v.PaintEquiped then
--- eqslot.Paint = v.PaintEquiped
--- end
--- if v.DoOnEquipPanel then
--- v.DoOnEquipPanel(eqslot)
--- end
--- eqslot:Droppable("Inventory")
--- eqslot.Item = v
--- eqslot.wasequiped = k
--- end
--- end
--- local moneylabel = vgui.Create("DLabel",invsheet)
--- moneylabel:SetPos(0,0)
--- moneylabel:SetSize(width/5,18)
--- moneylabel:SetText(string.format("Credits:%7d", ART.Credits or 0))
--- print("Displaying credits:" .. string.format("Credits:%7d", ART.Credits or 0))
---
--- local backpacksheet = vgui.Create( "DPropertySheet", invsheet )
--- backpacksheet:SetPos(0,slotsize * 6)
--- backpacksheet:SetSize((width / 4) - 26, height - (slotsize * 6) - 70)
--- for k,v in pairs(LocalPlayer().Inventory.Backpacks) do
--- local tbacksheet = vgui.Create( "DPanel", backpacksheet )
--- tbacksheet.Paint = function( self, w, h ) draw.RoundedBox( 4, 0, 0, w, h, Color( 157, 160, 167 ) ) end
--- backpacksheet:AddSheet( v[3], tbacksheet, "icon16/cross.png" )
---
--- DrawBackpackOnDPanel(tbacksheet,v,k,LocalPlayer())
--- end
---
--- return "Inventory", invsheet, "icon16/cross.png"
--- end
---
---
--- ART.RegisterInventorySheet(invsheetfunc)
diff --git a/gamemode/client/qpanels/prayers.lua b/gamemode/client/qpanels/prayers.lua
deleted file mode 100644
index 674d5d8..0000000
--- a/gamemode/client/qpanels/prayers.lua
+++ /dev/null
@@ -1,170 +0,0 @@
--- do return end
--- 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)
diff --git a/gamemode/client/qpanels/quests.lua b/gamemode/client/qpanels/quests.lua
deleted file mode 100644
index eda9e31..0000000
--- a/gamemode/client/qpanels/quests.lua
+++ /dev/null
@@ -1,31 +0,0 @@
--- do return end
---
--- ART.RegisterInventorySheet(function()
---
--- local width = ScrW()
--- local height = ScrH()
---
--- local questsheet = vgui.Create( "DPanel")
--- questsheet.Paint = function(self,w,h) end
---
--- --Display quests
--- local questselector = vgui.Create( "DScrollPanel", questsheet )
--- questselector:SetSize((width / 4) - 20, (height / 2) - 40)
--- questselector:SetPos(0,0)
--- local questinfo = vgui.Create("DScrollPanel", questsheet)
--- questinfo:SetSize(width / 4, height / 2)
--- questinfo:SetPos(0,height / 2)
--- for k,v in pairs(LocalPlayer().Quests or {}) do
--- print("Displaying quest:" .. k)
--- local questbutton = vgui.Create( "DButton" , questselector )
--- questbutton:Dock(TOP)
--- questbutton:SetText(k)
--- questbutton.DoClick = function()
--- print("At point of clicking, art is:")
--- PrintTable(ART)
--- ART.GetQuest(k).DrawQuestInfo(questinfo,v)
--- end
--- end
---
--- return "Quests", questsheet, "icon16/house.png"
--- end)
diff --git a/gamemode/client/qpanels/skills.lua b/gamemode/client/qpanels/skills.lua
deleted file mode 100644
index 1904445..0000000
--- a/gamemode/client/qpanels/skills.lua
+++ /dev/null
@@ -1,10 +0,0 @@
--- do return end
---
---
--- ART.RegisterInventorySheet(function()
---
--- local skillsheet = vgui.Create( "DPanel" )
--- skillsheet.Paint = function( self, w, h ) end
---
--- return "Skills", skillsheet, "icon16/tick.png"
--- end)
diff --git a/gamemode/client/qtabs/cl_qinventory.lua b/gamemode/client/qtabs/cl_qinventory.lua
index 1e1ceb3..32fd441 100644
--- a/gamemode/client/qtabs/cl_qinventory.lua
+++ b/gamemode/client/qtabs/cl_qinventory.lua
@@ -1,6 +1,7 @@
--[[
One of the tabs in the inventory
]]
+do return end
local inv = nrequire("inventory/inventory.lua")
local itm = nrequire("item.lua")
--local state = nrequire("cl_state.lua")