summaryrefslogtreecommitdiff
path: root/todo/pressure_logic.txt
diff options
context:
space:
mode:
authorthetaepsilon-gamedev <thetaepsilon-gamedev@noreply.users.github.com>2017-10-18 12:06:48 +0100
committerthetaepsilon-gamedev <thetaepsilon-gamedev@noreply.users.github.com>2017-10-18 12:07:16 +0100
commit7b141fb0ea216e2ca49eb4d2246bca9f8689c5d0 (patch)
tree3d97bb61c231de0dfe5d474d94de8dac5238d897 /todo/pressure_logic.txt
parent38a893ec829e834ab0f24c709abda13b38fba205 (diff)
downloadpipeworks-7b141fb0ea216e2ca49eb4d2246bca9f8689c5d0.tar
pipeworks-7b141fb0ea216e2ca49eb4d2246bca9f8689c5d0.tar.gz
pipeworks-7b141fb0ea216e2ca49eb4d2246bca9f8689c5d0.tar.bz2
pipeworks-7b141fb0ea216e2ca49eb4d2246bca9f8689c5d0.tar.xz
pipeworks-7b141fb0ea216e2ca49eb4d2246bca9f8689c5d0.zip
todo: rename file for new flow logic in line with aacd5ec
Diffstat (limited to 'todo/pressure_logic.txt')
-rw-r--r--todo/pressure_logic.txt40
1 files changed, 40 insertions, 0 deletions
diff --git a/todo/pressure_logic.txt b/todo/pressure_logic.txt
new file mode 100644
index 0000000..41ce2f8
--- /dev/null
+++ b/todo/pressure_logic.txt
@@ -0,0 +1,40 @@
+-- Directionality code (in progress)
+The flowable node class for directional nodes now exists and is hooked up in the code for determining valid neighbours in the flowable node ABM routines.
+Pumps have been converted to this as part of the testing.
+However, currently only the "raw" registration for this is available, and the pump definition registers it's own callback routines.
+Helpers need to be added to flowable_node_registry_install.lua to abstract away the expression of which nodes can flow which ways - valves, flow sensors, spigots and entry panels, for instance, all currently rotate the same way using an upwards facedir, so a helper for these nodes would prevent code duplication.
+
+
+-- (may not be possible) stop removing water nodes that were not placed by outputs when off
+In non-finite mode, spigots and fountainheads will vanish water sources in their output positions, even if those output nodes did not place them there.
+This is annoying though not game-breaking in non-finite mode, where water sources can at least be easily replenished.
+Fixing this would require some kind of metadata marker on water nodes placed by spigots and fountains, such that only water sources placed while the device is "on" are removed when it is "off".
+It is debateable whether existing water sources should be marked for removal when the device turns on again.
+
+-- Make spigots and fountainheads deactivate by placing a flowing water node
+Currently, in non-finite mode, the spigots and fountainheads react to pressure dropping below threshold by deleting the water source they placed.
+VanessaE would like this changed so that these nodes replace the water source with a flowing water source, such that it drains away at the same rate as surrounding water.
+This should be a simple case of modifying the cleanup handler that is installed for these nodes by the helper that they use, to place flowing water instead of air in the situations where it would normally do so.
+
+-- Decorative grating functionality
+The decorative grating block currently is just that - purely decorative, it serves no purpose.
+VanessaE would like this to function as an output with the following properties:
+* While on, tries to randomly place a water source in an adjacent node every ABM interval, preferring to place it downwards first.
+* Even with multiple water source nodes placed, only drains 1 unit pressure per ABM interval in non-finite mode. Finite mode will cause it to drain 1 unit per water source node placed and simply stop placing sources when below threshold pressure, like spigots and fountainheads already do.
+* When turning off in non-finite mode, for all neighbour nodes, replace the water sources with flowing water as discussed above, but *only* if those neighbouring sources do not have any water source neighbours of their own in turn - this will prevent the block from creating a "hole" in a uniform pool of water sources.
+
+
+
+-- Support for other fluids in pipes (Feature request/wish list)
+Various sources from IRC and github issues have indicated that the ability to carry amounts of substance other than water through pipes would see uses appear for it if it were implemented (there does not appear to be anything trying to do so right now).
+Extending the pressure mechanism to handle new fluids would be simple enough, it would just have to deal with more variables.
+However, this feature raises the question of how to handle mixtures of fluids in pipes.
+
+Two possible solutions appear evident:
++ Don't mix at all. For each flowable registered, either a variant would be created for each supported liquid, or each node would declare which fluid it carries explicitly. Flowable nodes for different fluids would not interact with each other at all.
+
++ Equalise "pressure" of multiple fluid variables in a similar manner to how the single water pressure value is currently balanced out, however this raises the issue of how to deal with mixtures - for instance, how is a spigot to function with a mixed liquid? does it simply refuse to function if it doesn't know how to deal with a certain mixture (as it can only output whole nodes)? likewise for certain mixtures in pipes, should it be allowed for lava and water for instance to mix like they don't interact at all?
+
+This mechanism also hints at a weakness of the pressure logic mechanism as it currently stands - namely that liquids are handled like gases and assumed to be compressible.
+
+