An inventory that ties into stuff above but also more generally for other systems. Like in shatterloop make it abstract and clone it so other inventories can exist.
The basic space game
Material transformation systems from the environment/internal/storage.
Fixture "checking", "activation" (via pipes) and these mechanics that tie into other systems. Including power, cooling, etc.
Fixture properties and mechanics thereof
Component properties, tie into fixture properties and component construction
Phase 2 (player limits)
Debug functions to get around the loss of player autonomy
.add(obj) should use the index variable to create a new pipe in data and increment the index variable. "path" should be a list of coords, which can totally just be one in the case of a new pipe. There also needs to be a "type". Have also "mouth" and "tail" properties that can either be a fixture index or false --starting conditions should always be false however. I can handle breaks/etc later.
.remove(index) should do what you expect without changing indexes in any capacity.
Pathing
Pathing for starting fixtures doesn't need to be optimal, and optimal pathings don't need to be calculated for player involvement, so that will simplify this a bit.
pipes.find_path(from,to) should find a path from one coord to another via dirs.move_3d() recursive searching. Make sure this works like selmagic{} and isn't infinite. Return a list of coords starting with from and ending in to.
Starting Conditions
In pipes{}, have .starting{}.
List out all starting pipe connections in whatever way makes sense. May need a separate checklist. Since there's only one life node connection, there only needs to be one entry herein.
Performing starting conditions
Create pipes.gen() and bootstrap into gen.gen() at the bottom.
fixure_locs is no longer just debugging -- indicate accordingly and put wherever it makes the most sense.
Loop through all pipe connections, referencing fixture_locs to find paths, and then push to pipes.add(). Set mouths and tails as well.
Mouths/Tails
pipes.attach(pipe_id,loc,fixture_id) should alter the properties accordingly -- loc can be "mouth" or "tail".
pipes.detach(pipe_id,loc) should do the opposite.
Attaching needs to also alter the fixture data itself. Detaching should work similarly. Keep data as constrained as possible -- can always pull pipe data manually. So literally just a pipe_id, though I guess the type also needs to be specified.
In pipes.gen(), also attach the mouths and tails to the appropriate fixtures.