Диспетчер событий, реализованный на Lua.
Является одним из фундаментальных модулей при построении ахритектуры приложения. Решает проблему высокого зацепления. В основе - паттерн observer
Простыми словами - создает прослойку общения между вашими наработками, после чего вы можете использовать в других проектах только часть из них и ничего не сломается.
Установка
Использование
local EventDispatcher = Imp.import(EventDispatcher)
-- Подписаться на событие
-- Параметр event - объект со свойствами "data", "name" и "stopPropagation"
-- Можно установить event.stopPropagation = true внутри коллбека, чтобы прервать текущий цикл рассылки
EventDispatcher.on("любое имя события", function(event)
print("Callback A 1: " .. event.data)
end)
-- ... another file ...
-- Отправить событие со своими данными
EventDispatcher.dispatch("любое имя события", "данные события, любого типа")
История версий
1.2: исправлена возможность десинка (разного поведения на разных машинах) при множестве слушателей одного события
2.0: Добавлена поддержка IMP, имя модуля изменено на EventDispatcher
2.0: Добавлена поддержка IMP, имя модуля изменено на EventDispatcher
Ред. ScorpioT1000
Я несколько раз использовал эту наработку (правда не в играх), очень нравится.
Ред. Koladik