aboutsummaryrefslogtreecommitdiff
path: root/gamemode
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2017-11-06 23:19:21 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2017-11-06 23:19:21 -0500
commitd7ebd5808e28d3d309eb28b36becfc758bec5a2f (patch)
tree172056c199f5c84c2fb6c621daf7a6e6c150c485 /gamemode
parentb9c323a705caa324cebfea994cf7b69294f9eebe (diff)
downloadartery-d7ebd5808e28d3d309eb28b36becfc758bec5a2f.tar.gz
artery-d7ebd5808e28d3d309eb28b36becfc758bec5a2f.tar.bz2
artery-d7ebd5808e28d3d309eb28b36becfc758bec5a2f.zip
Added client effect library
Simple way to register and call client effects
Diffstat (limited to 'gamemode')
-rw-r--r--gamemode/core/clienteffects/blocked.lua3
-rw-r--r--gamemode/core/clienteffects/cl_effects.lua23
-rw-r--r--gamemode/core/clienteffects/sh_effects.lua10
-rw-r--r--gamemode/core/clienteffects/sv_effects.lua16
4 files changed, 26 insertions, 26 deletions
diff --git a/gamemode/core/clienteffects/blocked.lua b/gamemode/core/clienteffects/blocked.lua
deleted file mode 100644
index fa2352c..0000000
--- a/gamemode/core/clienteffects/blocked.lua
+++ /dev/null
@@ -1,3 +0,0 @@
---[[
- Return a function that will get called when our attack is blocked (client side)
-]]
diff --git a/gamemode/core/clienteffects/cl_effects.lua b/gamemode/core/clienteffects/cl_effects.lua
index d51cf7d..368c34a 100644
--- a/gamemode/core/clienteffects/cl_effects.lua
+++ b/gamemode/core/clienteffects/cl_effects.lua
@@ -1,12 +1,23 @@
-
+local log = nrequire("log.lua")
+local er = {} --master table of effects
local effects = {}
-effects["weapon_blocked"] = function()
- util.ScreenShake( LocalPlayer():GetPos(), 3, 3, 0.25, 100 )
+
+function er.RegisterEffect(name,func)
+ if effects[name] ~= nil then
+ log.warn("Effect \"" .. name .. "\" already registered, replaceing...")
+ end
+ effects[name] = func
end
+er.RegisterEffect("weapon_blocked",function(data)
+ util.ScreenShake( LocalPlayer():GetPos(), 3, 3, 0.25, 100 )
+end)
+
net.Receive("art_clienteffect",function()
- local effectid = net.ReadUInt(32)
- local effectname = ART.screen_effect_ids[effectid]
+ local effectname = net.ReadString()
+ local effectdata = net.ReadData(net.ReadUInt(32))
print("Got effect name",effectname)
- effects[effectname]()
+ effects[effectname](effectdata)
end)
+
+return er
diff --git a/gamemode/core/clienteffects/sh_effects.lua b/gamemode/core/clienteffects/sh_effects.lua
deleted file mode 100644
index 70f3a79..0000000
--- a/gamemode/core/clienteffects/sh_effects.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-ART = ART or {}
-
-ART.screen_effect_ids = {
- "weapon_blocked"
-}
-
-ART.screen_effect_names = {}
-for k,v in pairs(ART.screen_effect_ids) do
- ART.screen_effect_names[v] = k
-end
diff --git a/gamemode/core/clienteffects/sv_effects.lua b/gamemode/core/clienteffects/sv_effects.lua
index 2a8e083..cc3039f 100644
--- a/gamemode/core/clienteffects/sv_effects.lua
+++ b/gamemode/core/clienteffects/sv_effects.lua
@@ -1,11 +1,13 @@
-ART = ART or {}
+local ed = {}
-util.AddNetworkString("art_clienteffect")
-
-ART.ApplyEffect = function(who,effectname)
- assert(ART.screen_effect_names[effectname] ~= nil,"Attempted to call a nil effect name:" .. effectname .. ". Valid effect names:" .. table.concat(ART.screen_effect_ids,","))
+function ed.SendEffect(ply,name,data)
net.Start("art_clienteffect")
- net.WriteUInt(ART.screen_effect_names[effectname],32)
- net.Send(who)
+ local dlen = #data
+ net.WriteString(name)
+ net.WriteUInt(dlen,32)
+ net.WriteData(data,dlen)
+ net.Send(ply)
end
+
+return ed