-- registration code for nodes under new flow logic -- written 2017 by thetaepsilon pipeworks.flowables = {} pipeworks.flowables.list = {} pipeworks.flowables.list.all = {} -- pipeworks.flowables.list.nodenames = {} -- simple flowables - balance pressure in any direction pipeworks.flowables.list.simple = {} pipeworks.flowables.list.simple_nodenames = {} -- simple intakes - try to absorb any adjacent water nodes pipeworks.flowables.inputs = {} pipeworks.flowables.inputs.list = {} pipeworks.flowables.inputs.nodenames = {} -- registration functions pipeworks.flowables.register = {} local register = pipeworks.flowables.register -- some sanity checking for passed args, as this could potentially be made an external API eventually local checkexists = function(nodename) if type(nodename) ~= "string" then error("pipeworks.flowables nodename must be a string!") end return pipeworks.flowables.list.all[nodename] end local insertbase = function(nodename) if checkexists(nodename) then error("pipeworks.flowables duplicate registration!") end pipeworks.flowables.list.all[nodename] = true -- table.insert(pipeworks.flowables.list.nodenames, nodename) end -- Register a node as a simple flowable. -- Simple flowable nodes have no considerations for direction of flow; -- A cluster of adjacent simple flowables will happily average out in any direction. -- This does *not* register the ABM, as that is done in register_flow_logic.lua; -- this is so that the new flow logic can remain optional during development. register.simple = function(nodename) insertbase(nodename) pipeworks.flowables.list.simple[nodename] = true table.insert(pipeworks.flowables.list.simple_nodenames, nodename) end local checkbase = function(nodename) if not checkexists(nodename) then error("pipeworks.flowables node doesn't exist as a flowable!") end end -- Register a node as a simple intake. -- See new_flow_logic for the details of this. -- Expects node to be registered as a flowable (is present in flowables.list.all), -- so that water can move out of it. -- maxpressure is the maximum pipeline pressure that this node can drive. -- possible WISHME here: technic-driven high-pressure pumps register.intake_simple = function(nodename, maxpressure) checkbase(nodename) pipeworks.flowables.inputs.list[nodename] = { maxpressure=maxpressure } table.insert(pipeworks.flowables.inputs.nodenames, nodename) end