summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorErik Schilling <ablu.erikschilling@googlemail.com>2012-03-10 23:31:32 +0100
committerErik Schilling <ablu.erikschilling@googlemail.com>2012-03-11 10:16:35 +0100
commit520705579d6a68cf6908275026eef2edee0758af (patch)
tree2d37eb5e28a1f6d95bac4094a613f054c08c55b2 /scripts
parent78c912fb4007c3e5f0b43de02646772acb21ecf2 (diff)
downloadmanaserv-520705579d6a68cf6908275026eef2edee0758af.tar.gz
manaserv-520705579d6a68cf6908275026eef2edee0758af.tar.bz2
manaserv-520705579d6a68cf6908275026eef2edee0758af.tar.xz
manaserv-520705579d6a68cf6908275026eef2edee0758af.zip
Added callbacks for map/worldvar changes
Reviewed-by: bjorn.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lua/libmana.lua44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/lua/libmana.lua b/scripts/lua/libmana.lua
index 94d1f99e..c170da2c 100644
--- a/scripts/lua/libmana.lua
+++ b/scripts/lua/libmana.lua
@@ -158,6 +158,50 @@ function schedule_per_date(my_year, my_month, my_day, my_hour, my_minute, funct)
table.sort(scheduler_jobs, job_cmp)
end
+-- MAP/WORLD VARIABLES NOTIFICATIONS
+local onmapvar_functs = {}
+local onworldvar_functs = {}
+
+local function on_mapvar_callback(key, value)
+ local functs = onmapvar_functs[key]
+ local mapid = mana.get_map_id()
+ for func, map in pairs(functs) do
+ if map == mapid then
+ func(key, value)
+ end
+ end
+end
+
+local function on_worldvar_callback(key, value)
+ local functs = onworldvar_functs[key]
+ for func, _ in pairs(functs) do
+ func(key, value)
+ end
+end
+
+function on_mapvar_changed(key, funct)
+ if not onmapvar_functs[key] then
+ onmapvar_functs[key] = {}
+ mana.on_mapvar_changed(key, on_mapvar_callback)
+ end
+ onmapvar_functs[key][funct] = mana.get_map_id()
+end
+
+function on_worldvar_changed(key, funct)
+ if not onworldvar_functs[key] then
+ onworldvar_functs[key] = {}
+ mana.on_worldvar_changed(key, on_worldvar_callback)
+ end
+ onworldvar_functs[key][funct] = true
+end
+
+function remove_mapvar_listener(key, funct)
+ onmapvar_functs[key][funct] = nil
+end
+
+function remove_worldvar_listener(key, funct)
+ onworldvar_functs[key][funct] = nil
+end
-- DEATH NOTIFICATIONS
local ondeath_functs = {}