The script is intended be used for simpler migration from a single control.lua
file to libs with Factorio's builtin lualib.event_handler
.
Single file:
-- control.lua
script.on_init(on_init)
script.on_configuration_changed(on_configuration_changed)
script.on_event({defines.events.on_built_entity, defines.events.on_robot_built_entity}, handler1)
script.on_event(defines.events.on_entity_died, handler2)
script.on_nth_tick(5, handle_5_step)
add_commands()
Nice, but for only one file π
Old libs approach:
-- script/my_lib.lua
local lib = {}
lib.on_init = on_init
lib.on_configuration_changed = on_configuration_changed
lib.events = {
[defines.events.on_built_entity] = handler1,
[defines.events.on_robot_built_entity] = handler1,
[defines.events.on_entity_died] = handler2,
}
lib.on_nth_tick = {
[5] = handle_5_step,
}
lib.add_commands = add_commands
return lib
-- control.lua
local handler = require("event_handler")
handler.add_lib(require("script.mylib"))
Scalable, but leads to ugly mixed syntax π
New way:
-- script/my_lib.lua
local Lib = require("event_lib")
local lib = Lib.new()
lib:on_init(on_init)
lib:on_configuration_changed(on_configuration_changed)
lib:on_event({defines.events.on_built_entity, defines.events.on_robot_built_entity}, handler1)
lib:on_event(defines.events.on_entity_died, handler2)
lib:on_nth_tick(5, handle_5_step)
lib.add_commands = add_commands
return lib
-- control.lua
local handler = require("event_handler")
handler.add_lib(require("script.mylib"):export())
This supports having multiple files too! π But it is more similar to the original syntax, also easier to add conditional events.
The EventLib also aims to provide common shortcuts, simplifying this:
Into this: