Skip to content

Lua: Система скриптовых коллбэков

ggGhosTt edited this page Aug 3, 2024 · 5 revisions

Система скриптовых коллбэков

  • Таблица intercepts принимает в себя название функций, активируемых по коллбэку;
  • Функция RegisterScriptCallback регистрирует коллбэк;
  • Функция UnregisterScriptCallback отменяет регистрацию коллбэка;
  • Функция SendScriptCallback посылает коллбэк.

Примерный сценарий использования:

-- доступные типы коллбеков
local intercepts = {
	save = {},
	load = {},
	update = {},

	save_state = {},
	load_state = {}
}
-- скрипт
function DoSomething()
    -- ...
    SendScriptCallback("save_state")
end 

function DoSomething2()
    -- ...
    SendScriptCallback("load_state")
end 
-- биндер
function actor_binder:reinit()
    -- ...
    RegisterScriptCallback("save_state", self)
end

function actor_binder:net_destroy()
    -- ...	
    UnregisterScriptCallback("save_state", self)
end

function actor_binder:load(reader)
    -- ...
    self:load_state() -- фейковый вызов ввиду неготовности биндера во время совершения коллбэка
end

function actor_binder:save_state()
    -- ...
end

function actor_binder:load_state()
    -- ...
end