summaryrefslogtreecommitdiff
path: root/example/scripts/callbacks.lua
blob: af27e1a5bc25b04f9a907654faa481b7ee9fbcfb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
--[[

 Allows to assign multiple functions to some callbacks

--]]

local monsterclass_update_old_callback = MonsterClass.on_update
local monsterclass_update_callbacks = {}

local function on_monsterclass_update(monsterclass, entity, tick)
    for _, func in ipairs(monsterclass_update_callbacks[monsterclass]) do
        func(entity, tick)
    end
end

function MonsterClass:on_update(func)
    if not monsterclass_update_callbacks[self] then
        monsterclass_update_old_callback(self, function(entity, tick)
            on_monsterclass_update(self, entity, tick)
        end)
        monsterclass_update_callbacks[self] = {}
    end
    table.insert(monsterclass_update_callbacks[self], func)
end