diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2017-11-04 22:42:24 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2017-11-04 22:42:24 -0400 |
| commit | 5d77d8475af7aff27eb026a4b56065387c024165 (patch) | |
| tree | ccdd061e5654288ab53134be52e8b1ef194d5ebc /gamemode/inventorysystem/skills | |
| parent | 40080dcfde028c64c4f6f51792b928ee91677bc6 (diff) | |
| download | artery-5d77d8475af7aff27eb026a4b56065387c024165.tar.gz artery-5d77d8475af7aff27eb026a4b56065387c024165.tar.bz2 artery-5d77d8475af7aff27eb026a4b56065387c024165.zip | |
Massive changes
* New error messages for missing dependencies
* Removed useless art_serverchanger entity
* Added a sweet ascii logo
* Added Skills
* Minor fixes to cl_inventory tracker
* Changed a few prints to use logging module
Diffstat (limited to 'gamemode/inventorysystem/skills')
| -rw-r--r-- | gamemode/inventorysystem/skills/cl_skills.lua | 67 | ||||
| -rw-r--r-- | gamemode/inventorysystem/skills/sh_skillcommon.lua | 68 | ||||
| -rw-r--r-- | gamemode/inventorysystem/skills/sh_skills.lua | 76 |
3 files changed, 136 insertions, 75 deletions
diff --git a/gamemode/inventorysystem/skills/cl_skills.lua b/gamemode/inventorysystem/skills/cl_skills.lua index c324a49..d4dbf65 100644 --- a/gamemode/inventorysystem/skills/cl_skills.lua +++ b/gamemode/inventorysystem/skills/cl_skills.lua @@ -1,53 +1,6 @@ local inv = {} ---[[ -inv.allskills = { - ["forageing"] = { - "hunting", - "butchering", - "woodcutting", - "plant identification", - }, - ["farming"] = { - "domestication", - "sowing", - "arboriculture", - "apiarism", - "reaping", - "fishing", - }, - ["artisanship"] = { - "pottery", - "glass blowing", - "cooking", - "tanning", - "tailoring", - "metalworking", - "lockpicking", - "herbalism", - "alchemy", - "jewlery", - }, - ["culture"] = { - "litteracy", - "writeing", - "speech", - "negotiation", - "painting", - "performing", - }, - ["adventuring"] = { - "polearm", - "axeplay", - "swordplay", - "knifeing", - "fenceing", - "lockpicking", - "archery", - "throwing", - }, -} -]] +local sc = nrequire("sh_skillcommon.lua") --the gui elements local elements = {} @@ -63,17 +16,21 @@ local levelfunc = function(val) end local set_xp_of = function(name,ammt) + print("setting xp of", name," to ", ammt) local lvl,frac = levelfunc(ammt) - elements[name].label:SetText(string.format("%s : %d (%d%%)",name,lvl,frac)) + elements[name].label:SetText(string.format("%s : %d (%2.5f%%)",name,lvl,frac)) elements[name].bar:SetFraction(frac) end inv.DrawOnDPanel = function(self,panel) print("Drawing skills on panel") + PrintTable(sc.SkillList()) + print("with") + PrintTable(self.skills) local sheet = vgui.Create( "DColumnSheet", panel ) sheet:Dock( FILL ) - for k,v in pairs(self.allskills) do + for k,v in pairs(sc.SkillList()) do local spanel = vgui.Create("DPanel", sheet) spanel:Dock(FILL) local layout = vgui.Create("DListLayout", spanel) @@ -89,7 +46,7 @@ inv.DrawOnDPanel = function(self,panel) ["label"] = label, ["bar" ] = bar, } - set_xp_of(j,self.skills[j]) + set_xp_of(j,self.skills[j] or 0) ipanel:Add(label) ipanel:Add(bar) ipanel:InvalidateLayout() @@ -102,11 +59,15 @@ inv.DrawOnDPanel = function(self,panel) local prox = {} prox.Put = function(s,position,item) - set_xp_of(position[1],s[position[1]]) + print("Calling inventory's put") + print("At time of call, skill was") + PrintTable(self) + set_xp_of(position[1],self.skills[position[1]]) end prox.Remove = function(s,position) - set_xp_of(position[1],s[position[1]]) + print("Calling inventory's remove") + set_xp_of(position[1],self.skills[position[1]]) end return prox diff --git a/gamemode/inventorysystem/skills/sh_skillcommon.lua b/gamemode/inventorysystem/skills/sh_skillcommon.lua new file mode 100644 index 0000000..d48fb98 --- /dev/null +++ b/gamemode/inventorysystem/skills/sh_skillcommon.lua @@ -0,0 +1,68 @@ +--[[ + Common functions since skills are a special inventory, adding skills need to be a special item +]] +local itm = nrequire("item.lua") + +--Common things +--Make sure items have a "name" and "ammt" attribute +local item = {} + +item.Name = "Skill" + +item.isskill = true + +item.Serialize = function(self) + return util.TableToJSON({ + name = self.name, + ammt = self.ammt + }) +end + +item.DeSerialize = function(self,data) + local tbl = util.JSONToTable(data) + tbl.isskill = true + return tbl +end + +itm.RegisterItem(item) + +local pmeta = FindMetaTable("Player") + +function pmeta:AddSkill(name, ammt) + local item = itm.GetItemByName("Skill") + item.name = name + item.ammt = ammt + self:GiveItem(item) +end + +local lib = {} +local skills = {} +--Skillname is a table of {string_group,string_name} +function lib.RegisterSkill(skillname) + print("funcs.RegisterSkill called with") + PrintTable(skillname) + local group,name = skillname[1],skillname[2] + if not skills[group] then + skills[group] = {} + end + local alin = false + for k,v in pairs(skills[group]) do + if v == name then + alin = true + break + end + end + if alin then + log.warn("Re-registering skill: " .. skillname) + else + skills[group][#skills[group] + 1] = name + end + print("After registering skill, skills is") + PrintTable(skills) +end + +function lib.SkillList() + return skills +end + +return lib diff --git a/gamemode/inventorysystem/skills/sh_skills.lua b/gamemode/inventorysystem/skills/sh_skills.lua index 27c3bad..9b6edd5 100644 --- a/gamemode/inventorysystem/skills/sh_skills.lua +++ b/gamemode/inventorysystem/skills/sh_skills.lua @@ -4,23 +4,29 @@ --local itm = nrequire("item.lua") --local ste = nrequire("utility/stream.lua") local inventory = nrequire("inventory/inventory.lua") +local log = nrequire("log.lua") --local col = nrequire("config/colortheme.lua") +local sc = nrequire("skills/sh_skillcommon.lua") local inv = {} if CLIENT then inv = nrequire("cl_skills.lua") end -inv.allskills = { +--TODO: uncomment these as their minigames are implemented +inv.allskills = {} +--[[ ["forageing"] = { - "hunting", - "butchering", - "woodcutting", - "plant identification", - "archery", +-- "Hunting", +-- "Butchering", +-- "Woodcutting", +-- "plant identification", +-- "archery", +-- "fishing", +-- "Mineing", }, ["farming"] = { - "domestication", - "sowing", - "arboriculture", - "apiarism", - "reaping", +-- "domestication", +-- "sowing", +-- "arboriculture", +-- "apiarism", +-- "reaping", }, ["artisanship"] = { "pottery", @@ -44,6 +50,8 @@ inv.allskills = { "painting", "performing", "faith", + "engraving", + "architect", }, ["adventuring"] = { "evasion", @@ -51,6 +59,7 @@ inv.allskills = { "lockpicking", "willpower", "dexterity", + "swimming", "sailing", }, ["fighting"] = { @@ -66,14 +75,20 @@ inv.allskills = { "archery", } } - +]] inv.Name = "Skills" inv.skills = {} -for k,v in pairs(inv.allskills) do - for i,j in pairs(v) do - inv.skills[j] = 0 +local function calculate_skills() + for k,v in pairs(sc.SkillList()) do + for i,j in pairs(v) do + print("settings inv's skills' ", j, " to 0") + inv.skills[j] = 0 + end end + print("After calculating skills, inv was") + PrintTable(inv) end +calculate_skills() --[[ item should be @@ -84,11 +99,16 @@ item should be } ]] inv.FindPlaceFor = function(self, item) - if item.isskill == nil then + print("finding place for ") + PrintTable(item) + if not item.isskill then return nil end - - if self.skills[item.name] then + print("Skill inventory trying to find place for, looking in ") + PrintTable(inv.skills) + print("for") + print(item.name) + if inv.skills[item.name] then return {item.name} else return nil @@ -96,11 +116,13 @@ inv.FindPlaceFor = function(self, item) end inv.CanFitIn = function(self,position,item) - return self.skills[position[1]] != nil + return sc.SkillList()[position[1]] != nil end inv.Put = function(self,position,item) - self.skills[position[1]] = self.skills[position[1]] + item.ammt + print("item is") + PrintTable(item) + self.skills[position[1]] = (self.skills[position[1]] or 0) + item.ammt end inv.Has = function(self,string_or_compare_func) @@ -130,10 +152,20 @@ end inv.DeSerialize = function(self,data) if data == nil or data == '' then - return table.Copy(self) + return table.Copy(inv) end + calculate_skills() + print("At the time we deserialized, sc.skilllist was") + PrintTable(sc.SkillList()) + print("Before making a copy of, inv is") + PrintTable(inv) local cpy = table.Copy(self) - cpy.skills = util.JSONToTable(data) + local gen = util.JSONToTable(data) + for k,v in pairs(gen) do + cpy.skills[k] = v + end + print("AFter deserializing inventory, it is") + PrintTable(cpy) return cpy end |
