aboutsummaryrefslogtreecommitdiff
path: root/gamemode/inventorysystem
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/inventorysystem')
-rw-r--r--gamemode/inventorysystem/quests/cl_quests.lua84
-rw-r--r--gamemode/inventorysystem/quests/sh_quests.lua9
2 files changed, 52 insertions, 41 deletions
diff --git a/gamemode/inventorysystem/quests/cl_quests.lua b/gamemode/inventorysystem/quests/cl_quests.lua
index 2052e19..9ad8eb1 100644
--- a/gamemode/inventorysystem/quests/cl_quests.lua
+++ b/gamemode/inventorysystem/quests/cl_quests.lua
@@ -1,59 +1,71 @@
+local log = nrequire("log.lua")
local inv = {}
--the gui elements
local elements = {}
local questlist = nil
local questlog = nil
-local function add_quest(panel,quest)
-
-end
+local function add_quest(panel,quest,position)
+ local questbutton = vgui.Create("DButton",questlist)
+ questbutton:SetText(quest.QuestName)
+ questbutton.DoClick = function()
+ log.debug("Setting quest text to:" .. quest:GetText())
+ questlog:SetText(quest:GetText())
+ end
+ log.debug("questlist: " .. tostring(questlist) .. "\tquestbutton: " .. tostring(questbutton))
+ questlist:AddItem(questbutton)
+ elements[position] = questbutton
+end
+local scrw, scrh = ScrW(), ScrH() -- Assume screen size dosn't change
+local hh = (scrh - 100) / 2
inv.DrawOnDPanel = function(self,panel)
local spanel = vgui.Create("DPanel", panel)
spanel:Dock(FILL)
- local halfs = vgui.Create("DVerticalDivider",spanel)
- questlist = vgui.Create("DListLayout", spanel)
- questlog = vgui.Create("DLabel",spanel)
- halfs:SetBottom(questlist)
- halfs:SetTop(questlog)
- questlist:Dock(FILL)
+ function spanel:Paint(w,h)
+ draw.RoundedBox( 8, 0, 0, w, h, Color( 255, 0, 0 ) )
+ end
+ local qls = vgui.Create("DScrollPanel", spanel)
+ function qls:Paint(w,h)
+ draw.RoundedBox( 8, 0, 0, w, h, Color( 0, 255, 0 ) )
+ end
+ qls:SetSize((scrw/4) - 40, hh)
+ inv.qls = qls
+ local sls = vgui.Create("DScrollPanel", spanel)
+ function sls:Paint(w,h)
+ draw.RoundedBox( 8, 0, 0, w, h, Color( 0, 0, 255 ) )
+ end
+ sls:SetSize((scrw/4) - 40, hh)
+ sls:SetPos(0,hh)
+ inv.sls = sls
+ questlist = vgui.Create("DGrid", qls)
+ questlist:SetCols(4)
+ questlist:SetColWide(((scrw/4) - 40) /4)
+ questlist:SetSize((scrw/4) - 50, hh)
+ function questlist:Paint(w,h)
+ draw.RoundedBox( 8, 0, 0, w, h, Color( 0, 255, 255 ) )
+ end
+ inv.questlist = questlist
+ inv.questlog = questlog
+ questlog = vgui.Create("DLabel", sls)
questlog:Dock(FILL)
+ questlog:SetDark(true)
+ questlog:SetText("Quest Log")
+ -- questlist:Dock(TOP)
+ -- questlog:Dock(BOTTOM)
for k,v in pairs(self.track) do
- local questbutton = vgui.Create("DButton",questlist)
- questbutton:SetText(v.QuestName)
- questbutton.DoClick = function()
- questlog:SetText(v:GetText())
- end
- for i,j in pairs(v) do
- local ipanel = vgui.Create("DListLayout",layout)
- local label = vgui.Create("DLabel",ipanel)
- label:Dock(TOP)
- label:SetDark(true)
- local bar = vgui.Create("DProgress",ipanel)
- bar:Dock(TOP)
- elements[j] = {
- ["label"] = label,
- ["bar" ] = bar,
- }
- set_xp_of(j,self.skills[j] or 0)
- ipanel:Add(label)
- ipanel:Add(bar)
- ipanel:InvalidateLayout()
- ipanel:SizeToChildren(true,true)
- layout:Add(ipanel)
- end
- layout:Dock(FILL)
- sheet:AddSheet(k, spanel, "icon16/cross.png")
+ add_quest(panel,v,k)
end
local prox = {}
prox.Put = function(s,position,item)
- --Observer might be called before our put()
+ add_quest(panel,item,position[1])
end
prox.Remove = function(s,position)
- --
+ questlist:RemoveItem(elements[position[1]])
+ -- log.error("Atempted to remove a quest")
end
return prox
diff --git a/gamemode/inventorysystem/quests/sh_quests.lua b/gamemode/inventorysystem/quests/sh_quests.lua
index 3515d61..fc651fc 100644
--- a/gamemode/inventorysystem/quests/sh_quests.lua
+++ b/gamemode/inventorysystem/quests/sh_quests.lua
@@ -13,12 +13,12 @@ inv.Name = "Quests"
inv.track = {}
function inv:FindPlaceFor(item)
if item.Arcs ~= nil then
- return {#self.track}
+ return {#self.track + 1}
end
return nil
end
function inv:CanFitIn(pos,item)
- return pos[1] == #self.track
+ return pos[1] == #self.track + 1
end
function inv:Put(pos,item)
print("Added a quest:")
@@ -57,10 +57,9 @@ function inv:DeSerialize(str)
self.track = {}
local tbl = util.JSONToTable(str)
tbl = tbl or {}
- local i = 1
for k,v in pairs(tbl) do
- local this_prayer = itm.GetItemByName(k):DeSerialize(v)
- self:Put({i},this_prayer)
+ local quest = itm.GetItemByName(k):DeSerialize(v)
+ self.track[#self.track + 1] = quest
end
return self
end