diff options
| -rw-r--r-- | new_flow_logic/flowable_node_registry.lua | 8 | ||||
| -rw-r--r-- | new_flow_logic/flowable_node_registry_install.lua | 16 | 
2 files changed, 21 insertions, 3 deletions
| diff --git a/new_flow_logic/flowable_node_registry.lua b/new_flow_logic/flowable_node_registry.lua index 2523803..c60a39e 100644 --- a/new_flow_logic/flowable_node_registry.lua +++ b/new_flow_logic/flowable_node_registry.lua @@ -17,6 +17,14 @@ pipeworks.flowables.list.all = {}  pipeworks.flowables.list.simple = {}  pipeworks.flowables.list.simple_nodenames = {} +-- directional flowables - can only flow on certain sides +-- format per entry is a table with the following fields: +-- neighbourfn: function(node), +--	called to determine which nodes to consider as neighbours. +--	can be used to e.g. inspect the node's param values for facedir etc. +--	returns: array of vector offsets to look for possible neighbours in +pipeworks.flowables.list.directional = {} +  -- simple intakes - try to absorb any adjacent water nodes  pipeworks.flowables.inputs = {}  pipeworks.flowables.inputs.list = {} diff --git a/new_flow_logic/flowable_node_registry_install.lua b/new_flow_logic/flowable_node_registry_install.lua index c8f6889..a49c31a 100644 --- a/new_flow_logic/flowable_node_registry_install.lua +++ b/new_flow_logic/flowable_node_registry_install.lua @@ -20,6 +20,9 @@ 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) +	if pipeworks.toggles.pressure_logic then +		abmregister.flowlogic(nodename) +	end  end  local regwarning = function(kind, nodename) @@ -35,12 +38,19 @@ register.simple = function(nodename)  	insertbase(nodename)  	pipeworks.flowables.list.simple[nodename] = true  	table.insert(pipeworks.flowables.list.simple_nodenames, nodename) -	if pipeworks.toggles.pressure_logic then -		abmregister.flowlogic(nodename) -	end  	regwarning("simple", nodename)  end +-- Register a node as a directional flowable: +-- has a helper function which determines which nodes to consider valid neighbours. +register.directional = function(nodename, neighbourfn) +	insertbase(nodename) +	pipeworks.flowables.list.directional[nodename] = { neighbourfn = neighbourfn } +	regwarning("directional", nodename) +end + + +  local checkbase = function(nodename)  	if not checkexists(nodename) then error("pipeworks.flowables node doesn't exist as a flowable!") end  end | 
