diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2018-07-15 19:57:27 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2018-07-15 19:57:27 -0400 |
| commit | 534103be54a129d8255988fc1e75a21a63c6021f (patch) | |
| tree | c172b0884b4ca26452c5a74f5033b3b1526b6e3a /gamemode/core/quests/arcs.lua | |
| parent | 34d9ae7c4f4176fa9a943e9c2776afc32a867163 (diff) | |
| download | artery-534103be54a129d8255988fc1e75a21a63c6021f.tar.gz artery-534103be54a129d8255988fc1e75a21a63c6021f.tar.bz2 artery-534103be54a129d8255988fc1e75a21a63c6021f.zip | |
Finished gather quest arcs
Finished base quest system, and added "Gather" arcs, where players
gather a certain number of a certain item.
Diffstat (limited to 'gamemode/core/quests/arcs.lua')
| -rw-r--r-- | gamemode/core/quests/arcs.lua | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/gamemode/core/quests/arcs.lua b/gamemode/core/quests/arcs.lua new file mode 100644 index 0000000..26c60ab --- /dev/null +++ b/gamemode/core/quests/arcs.lua @@ -0,0 +1,52 @@ + +local log = nrequire("log.lua") +local fun = nrequire("fn.lua") +local a = {} + +local arcs = {} +local arc_required_fields = { + "Name", + "Init", + "Serialize", + "DeSerialize" +} + +function a.RegisterArc(tbl) + for k,v in pairs(arc_required_fields) do + assert(tbl[v],"Attempted to register an arc, which didn't have a required field:" .. v) + end + if arcs[tbl.Name] ~= nil then + log.warn("Attempted to register and arc named " .. tbl.Name .. " when another arc by that name already exists. Overwriteing...") + end + arcs[tbl.Name] = tbl + log.debug("Registered new arc type:" .. tbl.Name) +end + +local function MakeArcBase(name) + log.debug("Making arc:" .. name) + assert(arcs[name] ~= nil, "Attempted to make an unknown arc type:\"" .. name .. "\". Known arc types are:" .. table.concat(table.GetKeys(arcs),"\n\t")) + local arc_m = { + __index = arcs[name] + } + arcbase = {} + setmetatable(arcbase,arc_m) + return arcbase +end + +function a.MakeArc(name, ...) + local arc = MakeArcBase(name) + arc:Init(...) + return arc +end + +function a.MakeArcWithData(name,data) + local arc = MakeArcBase(name) + arc:DeSerialize(data) + return arc +end + +concommand.Add("artery_printquestarcs",function(ply,cmd,args) + PrintTable(arcs) +end) + +return a |
