summaryrefslogtreecommitdiff
path: root/pressure_logic/flowable_node_registry.lua
diff options
context:
space:
mode:
authorthetaepsilon-gamedev <thetaepsilon-gamedev@noreply.users.github.com>2017-10-17 14:20:55 +0100
committerthetaepsilon-gamedev <thetaepsilon-gamedev@noreply.users.github.com>2017-10-17 14:20:55 +0100
commitaacd5ec829e531c808881021d5fe36aeedcfc2fd (patch)
tree25cf4bdc076f1bff2e9ad9be6e6a123c06982427 /pressure_logic/flowable_node_registry.lua
parent7bacbdf0150d4aee1244ec2ad7076ccd2da7956d (diff)
downloadpipeworks-aacd5ec829e531c808881021d5fe36aeedcfc2fd.tar
pipeworks-aacd5ec829e531c808881021d5fe36aeedcfc2fd.tar.gz
pipeworks-aacd5ec829e531c808881021d5fe36aeedcfc2fd.tar.bz2
pipeworks-aacd5ec829e531c808881021d5fe36aeedcfc2fd.tar.xz
pipeworks-aacd5ec829e531c808881021d5fe36aeedcfc2fd.zip
rename new_flow_logic subdirectory to a less ambiguous name
The "new flow logic" name was supposed to indicate that it was a continuation of the old branch by the same name, but it is beginning to become clear that it's not "new" any more and it might lead to confusion with "classic mode" flow logic while that still co-exists. Explicitly name the subdirectory "pressure logic" to give a better idea of what goes in it, init.lua edited accordingly.
Diffstat (limited to 'pressure_logic/flowable_node_registry.lua')
-rw-r--r--pressure_logic/flowable_node_registry.lua56
1 files changed, 56 insertions, 0 deletions
diff --git a/pressure_logic/flowable_node_registry.lua b/pressure_logic/flowable_node_registry.lua
new file mode 100644
index 0000000..c60a39e
--- /dev/null
+++ b/pressure_logic/flowable_node_registry.lua
@@ -0,0 +1,56 @@
+-- registry of flowable node behaviours in new flow logic
+-- written 2017 by thetaepsilon
+
+-- the actual registration functions which edit these tables can be found in flowable_node_registry_install.lua
+-- this is because the ABM code needs to inspect these tables,
+-- but the registration code needs to reference said ABM code.
+-- so those functions were split out to resolve a circular dependency.
+
+
+
+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 = {}
+
+-- 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 = {}
+pipeworks.flowables.inputs.nodenames = {}
+
+-- outputs - takes pressure from pipes and update world to do something with it
+pipeworks.flowables.outputs = {}
+pipeworks.flowables.outputs.list = {}
+-- not currently any nodenames arraylist for this one as it's not currently needed.
+
+-- nodes with registered node transitions
+-- nodes will be switched depending on pressure level
+pipeworks.flowables.transitions = {}
+pipeworks.flowables.transitions.list = {} -- master list
+pipeworks.flowables.transitions.simple = {} -- nodes that change based purely on pressure
+pipeworks.flowables.transitions.mesecons = {} -- table of mesecons rules to apply on transition
+
+
+
+-- checks if a given node can flow in a given direction.
+-- used to implement directional devices such as pumps,
+-- which only visually connect in a certain direction.
+-- node is the usual name + param structure.
+-- direction is an x/y/z vector of the flow direction;
+-- this function answers the question "can this node flow in this direction?"
+pipeworks.flowables.flow_check = function(node, direction)
+ minetest.log("warning", "pipeworks.flowables.flow_check() stub!")
+ return true
+end