InsaneProtestor/mods/ip_terumet/interop/tubelib.lua
2022-11-22 00:44:34 -05:00

53 lines
2.2 KiB
Lua

local tube = 'tubelib:tubeS'
if tubelib.version < 2.0 then
tube = 'tubelib:tube1'
end
terumet.register_machine_upgrade('tubelib', 'Tube Support Upgrade', {terumet.id('item_upg_base'), tube}, nil, 'simple', 'Allows machine to interface with tubelib tubes')
local machine_check = function(machine, player_name)
return machine and terumet.machine.has_upgrade(machine, 'tubelib')
---terumet.machine.has_auth(machine, player_name)
end
local PUSH_FUNC = function(pos, side, item, player_name)
local machine = terumet.machine.readonly_state(pos)
if machine_check(machine) then
local result = tubelib.put_item(machine.meta, 'in', item)
if result then machine.class.on_inventory_change(machine) end
return result
end
return false
end
local TUBELIB_MACHINE_DEF = {
on_pull_item = function(pos, side, player_name)
local machine = terumet.machine.readonly_state(pos)
if machine_check(machine) then
return tubelib.get_item(machine.meta, 'out')
end
return nil
end,
on_push_item = PUSH_FUNC,
on_unpull_item = PUSH_FUNC
}
terumet.machine.register_on_place(function (pos, machine, placer)
tubelib.add_node(pos, machine.class.name)
end)
terumet.machine.register_on_remove(function (pos, machine)
tubelib.remove_node(pos)
end)
tubelib.register_node(terumet.id('mach_asmelt'), {terumet.id('mach_asmelt_lit')}, TUBELIB_MACHINE_DEF)
tubelib.register_node(terumet.id('mach_htfurn'), {terumet.id('mach_htfurn_lit')}, TUBELIB_MACHINE_DEF)
tubelib.register_node(terumet.id('mach_lavam'), {terumet.id('mach_lavam_lit')}, TUBELIB_MACHINE_DEF)
tubelib.register_node(terumet.id('mach_htr_furnace'), {terumet.id('mach_htr_furnace_lit')}, TUBELIB_MACHINE_DEF)
tubelib.register_node(terumet.id('mach_crusher'), {terumet.id('mach_crusher_lit')}, TUBELIB_MACHINE_DEF)
--oops: mese garden has no upgrade slots... consider adding it if support for other upgrades is added in future
--tubelib.register_node(terumet.id('mach_meseg'), terumet.EMPTY, TUBELIB_MACHINE_DEF)
tubelib.register_node(terumet.id('mach_repm'), terumet.EMPTY, TUBELIB_MACHINE_DEF)
tubelib.register_node(terumet.id('mach_vulcan'), terumet.EMPTY, TUBELIB_MACHINE_DEF)