summaryrefslogtreecommitdiff
path: root/todo/new_flow_logic.txt
blob: b6787e92fcbe0235be62068163a41fc8d3d46df1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- Directionality code
Currently, only "simple" flowable nodes exist, and they will always equalise pressure with all six neighbours.
A more sophisticated  behaviour for this would be flowable node registration with some kind of custom callback, such that water can only flow into or out of these nodes in certain directions.
This would enable devices such as the airtight panels, sensor tubes and valves to have correct flow behaviour.

-- (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.