mirror of
https://github.com/mt-mods/pipeworks.git
synced 2024-11-18 00:08:28 +01:00
60 lines
2.3 KiB
Lua
60 lines
2.3 KiB
Lua
|
-- registration code for nodes under new flow logic
|
||
|
-- written 2017 by thetaepsilon
|
||
|
|
||
|
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 = {}
|
||
|
|
||
|
-- simple intakes - try to absorb any adjacent water nodes
|
||
|
pipeworks.flowables.inputs = {}
|
||
|
pipeworks.flowables.inputs.list = {}
|
||
|
pipeworks.flowables.inputs.nodenames = {}
|
||
|
|
||
|
-- registration functions
|
||
|
pipeworks.flowables.register = {}
|
||
|
local register = pipeworks.flowables.register
|
||
|
|
||
|
-- some sanity checking for passed args, as this could potentially be made an external API eventually
|
||
|
local checkexists = function(nodename)
|
||
|
if type(nodename) ~= "string" then error("pipeworks.flowables nodename must be a string!") end
|
||
|
return pipeworks.flowables.list.all[nodename]
|
||
|
end
|
||
|
|
||
|
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)
|
||
|
end
|
||
|
|
||
|
-- Register a node as a simple flowable.
|
||
|
-- Simple flowable nodes have no considerations for direction of flow;
|
||
|
-- A cluster of adjacent simple flowables will happily average out in any direction.
|
||
|
-- This does *not* register the ABM, as that is done in register_flow_logic.lua;
|
||
|
-- this is so that the new flow logic can remain optional during development.
|
||
|
register.simple = function(nodename)
|
||
|
insertbase(nodename)
|
||
|
pipeworks.flowables.list.simple[nodename] = true
|
||
|
table.insert(pipeworks.flowables.list.simple_nodenames, nodename)
|
||
|
end
|
||
|
|
||
|
local checkbase = function(nodename)
|
||
|
if not checkexists(nodename) then error("pipeworks.flowables node doesn't exist as a flowable!") end
|
||
|
end
|
||
|
|
||
|
-- Register a node as a simple intake.
|
||
|
-- See new_flow_logic for the details of this.
|
||
|
-- Expects node to be registered as a flowable (is present in flowables.list.all),
|
||
|
-- so that water can move out of it.
|
||
|
-- maxpressure is the maximum pipeline pressure that this node can drive.
|
||
|
-- possible WISHME here: technic-driven high-pressure pumps
|
||
|
register.intake_simple = function(nodename, maxpressure)
|
||
|
checkbase(nodename)
|
||
|
pipeworks.flowables.inputs.list[nodename] = { maxpressure=maxpressure }
|
||
|
table.insert(pipeworks.flowables.inputs.nodenames, nodename)
|
||
|
end
|