62 lines
2.2 KiB
Lua
62 lines
2.2 KiB
Lua
--[[
|
|
A basic interface script, with generic functions
|
|
usage:
|
|
local interface = require(__stdlib__/stdlib/scripts/interface)
|
|
interface.myfunc = function() end
|
|
remote.add_interface(script.mod_name, interface)
|
|
interface.myfunc2 = function() end -- Can even add new functions afterwards!
|
|
]] --
|
|
local interface = {}
|
|
local Table = require('__stdlib__/stdlib/utils/table')
|
|
|
|
local Event = require('__stdlib__/stdlib/event/event')
|
|
local Game = require('__stdlib__/stdlib/game')
|
|
local Changes = require('__stdlib__/stdlib/event/changes')
|
|
local Player = require('__stdlib__/stdlib/event/player')
|
|
local Force = require('__stdlib__/stdlib/event/force')
|
|
|
|
local ignore_defines = Table.invert { 'anticolor', 'lightcolor', 'color', 'time' }
|
|
|
|
local function write(data, name, keyignore, maxlevel)
|
|
return serpent.block(data, { comment = false, nocode = true, name = name, keyignore = keyignore, maxlevel = maxlevel })
|
|
end
|
|
|
|
interface['write_global'] = function()
|
|
game.remove_path(script.mod_name)
|
|
|
|
game.write_file(script.mod_name .. '/global.lua', write(global, 'global'))
|
|
game.write_file(script.mod_name .. '/package.lua', write(package.loaded, 'package', nil, 1))
|
|
game.write_file(script.mod_name .. '/interface.lua', write(remote.interfaces[script.mod_name] or {}, 'interface'))
|
|
game.write_file(script.mod_name .. '/_G.lua', write(_G, 'globals', nil, 1))
|
|
|
|
Event.dump_data()
|
|
Player.dump_data()
|
|
Force.dump_data()
|
|
Changes.dump_data()
|
|
end
|
|
|
|
interface['dump_all'] = function()
|
|
game.remove_path('Interfaces')
|
|
|
|
game.write_file('defines.lua', write(defines, 'defines', ignore_defines))
|
|
|
|
game.write_file('interfaces.lua', write(remote.interfaces, 'interfaces'))
|
|
for name, interfaces in pairs(remote.interfaces) do
|
|
-- Write each interface
|
|
game.write_file('Interfaces/' .. name .. '.lua', write(interfaces, 'interface'))
|
|
if interfaces['write_global'] then remote.call(name, 'write_global') end
|
|
end
|
|
|
|
Game.write_mods()
|
|
Game.write_surfaces()
|
|
Game.write_statistics()
|
|
game.print('Finished writing all data to script-output')
|
|
end
|
|
|
|
interface['merge_interfaces'] = function(tab)
|
|
Table.merge(interface, tab, false)
|
|
return interface
|
|
end
|
|
|
|
return interface
|