mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-12 07:04:52 +09:00
Add a library mod for wrapping the Clusterio remote API and providing related utilities. This eases development of Clusterio related Lua code by providing the same interface for both mods and modules and also makes the serialize library available without having to duplicate it. It is not possible to implement this through save patching as mods cannot load Lua code from the level code like they can with code from other mods.
62 lines
1.7 KiB
Lua
62 lines
1.7 KiB
Lua
local api = require('modules/clusterio/api')
|
|
|
|
local impl = {}
|
|
|
|
|
|
impl.events = {}
|
|
impl.events[defines.events.on_tick] = function()
|
|
if global.clusterio_patch_number ~= clusterio_patch_number then
|
|
global.clusterio_patch_number = clusterio_patch_number
|
|
script.raise_event(api.events.on_server_startup, {})
|
|
end
|
|
end
|
|
|
|
impl.events[api.events.on_server_startup] = function()
|
|
if not global.clusterio then
|
|
global.clusterio = {
|
|
instance_id = nil,
|
|
instance_name = nil,
|
|
}
|
|
end
|
|
end
|
|
|
|
-- Internal API
|
|
clusterio_private = {}
|
|
function clusterio_private.update_instance(new_id, new_name)
|
|
global.clusterio.instance_id = new_id
|
|
global.clusterio.instance_name = new_name
|
|
script.raise_event(api.events.on_instance_updated, {
|
|
instance_id = new_id,
|
|
instance_name = new_name,
|
|
})
|
|
end
|
|
|
|
|
|
-- This is not part of the add_remote_interface callback to ensure it is
|
|
-- available when the clusterio_lib mod is loaded. The reason this is
|
|
-- neccessary is that on_init for newly added mods happen before on_load
|
|
-- for existing mods, and the add_remote_interface callback is done in
|
|
-- on_load. See https://forums.factorio.com/viewtopic.php?f=25&t=81552 for
|
|
-- more details.
|
|
remote.add_interface('clusterio_api', {
|
|
get_events = function()
|
|
return api.events
|
|
end,
|
|
|
|
get_instance_id = function()
|
|
return global.clusterio.instance_id
|
|
end,
|
|
|
|
get_instance_name = function()
|
|
return global.clusterio.instance_name
|
|
end,
|
|
|
|
get_file_no = function()
|
|
global.clusterio_file_no = (global.clusterio_file_no or 0) + 1
|
|
return global.clusterio_file_no
|
|
end,
|
|
})
|
|
|
|
|
|
return impl
|