diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-03-10 23:31:32 +0100 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-03-11 10:16:35 +0100 |
commit | 520705579d6a68cf6908275026eef2edee0758af (patch) | |
tree | 2d37eb5e28a1f6d95bac4094a613f054c08c55b2 /scripts/lua/libmana.lua | |
parent | 78c912fb4007c3e5f0b43de02646772acb21ecf2 (diff) | |
download | manaserv-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/lua/libmana.lua')
-rw-r--r-- | scripts/lua/libmana.lua | 44 |
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 = {} |