summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2013-11-25 23:55:52 -0500
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2013-11-25 23:55:52 -0500
commit7289bfcfbab13044b83720ff4c675a356b8dedc5 (patch)
tree2ad84c4e4418f8003a4be36d2727a64132360ad5
parentd3825b6db6dc1635bfaff29743e379eb576ea81c (diff)
downloadpipeworks-7289bfcfbab13044b83720ff4c675a356b8dedc5.tar
pipeworks-7289bfcfbab13044b83720ff4c675a356b8dedc5.tar.gz
pipeworks-7289bfcfbab13044b83720ff4c675a356b8dedc5.tar.bz2
pipeworks-7289bfcfbab13044b83720ff4c675a356b8dedc5.tar.xz
pipeworks-7289bfcfbab13044b83720ff4c675a356b8dedc5.zip
Split pipe and tube autorouting functions into separate files.
-rw-r--r--autoplace_pipes.lua205
-rw-r--r--autoplace_tubes.lua (renamed from autoplace.lua)282
-rw-r--r--init.lua3
3 files changed, 209 insertions, 281 deletions
diff --git a/autoplace_pipes.lua b/autoplace_pipes.lua
new file mode 100644
index 0000000..fe0ddbe
--- /dev/null
+++ b/autoplace_pipes.lua
@@ -0,0 +1,205 @@
+-- autorouting for pipes
+
+function pipe_scanforobjects(pos)
+ pipe_autoroute({ x=pos.x-1, y=pos.y , z=pos.z }, "_loaded")
+ pipe_autoroute({ x=pos.x+1, y=pos.y , z=pos.z }, "_loaded")
+ pipe_autoroute({ x=pos.x , y=pos.y-1, z=pos.z }, "_loaded")
+ pipe_autoroute({ x=pos.x , y=pos.y+1, z=pos.z }, "_loaded")
+ pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z-1 }, "_loaded")
+ pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z+1 }, "_loaded")
+ pipe_autoroute(pos, "_loaded")
+
+ pipe_autoroute({ x=pos.x-1, y=pos.y , z=pos.z }, "_empty")
+ pipe_autoroute({ x=pos.x+1, y=pos.y , z=pos.z }, "_empty")
+ pipe_autoroute({ x=pos.x , y=pos.y-1, z=pos.z }, "_empty")
+ pipe_autoroute({ x=pos.x , y=pos.y+1, z=pos.z }, "_empty")
+ pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z-1 }, "_empty")
+ pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z+1 }, "_empty")
+ pipe_autoroute(pos, "_empty")
+end
+
+function pipe_autoroute(pos, state)
+ nctr = minetest.get_node(pos)
+ if (string.find(nctr.name, "pipeworks:pipe_") == nil) then return end
+
+ pipes_scansurroundings(pos)
+
+ nsurround = pxm..pxp..pym..pyp..pzm..pzp
+ if nsurround == "000000" then nsurround = "110000" end
+ minetest.add_node(pos, { name = "pipeworks:pipe_"..nsurround..state })
+end
+
+-- auto-rotation code for various devices the tubes attach to
+
+function pipes_scansurroundings(pos)
+ pxm=0
+ pxp=0
+ pym=0
+ pyp=0
+ pzm=0
+ pzp=0
+
+ nxm = minetest.get_node({ x=pos.x-1, y=pos.y , z=pos.z })
+ nxp = minetest.get_node({ x=pos.x+1, y=pos.y , z=pos.z })
+ nym = minetest.get_node({ x=pos.x , y=pos.y-1, z=pos.z })
+ nyp = minetest.get_node({ x=pos.x , y=pos.y+1, z=pos.z })
+ nzm = minetest.get_node({ x=pos.x , y=pos.y , z=pos.z-1 })
+ nzp = minetest.get_node({ x=pos.x , y=pos.y , z=pos.z+1 })
+
+ if (string.find(nxm.name, "pipeworks:pipe_") ~= nil) then pxm=1 end
+ if (string.find(nxp.name, "pipeworks:pipe_") ~= nil) then pxp=1 end
+ if (string.find(nym.name, "pipeworks:pipe_") ~= nil) then pym=1 end
+ if (string.find(nyp.name, "pipeworks:pipe_") ~= nil) then pyp=1 end
+ if (string.find(nzm.name, "pipeworks:pipe_") ~= nil) then pzm=1 end
+ if (string.find(nzp.name, "pipeworks:pipe_") ~= nil) then pzp=1 end
+
+-- Special handling for valves...
+
+ if (string.find(nxm.name, "pipeworks:valve") ~= nil)
+ and (nxm.param2 == 0 or nxm.param2 == 2) then
+ pxm=1
+ end
+
+ if (string.find(nxp.name, "pipeworks:valve") ~= nil)
+ and (nxp.param2 == 0 or nxp.param2 == 2) then
+ pxp=1
+ end
+
+ if (string.find(nzm.name, "pipeworks:valve") ~= nil)
+ and (nzm.param2 == 1 or nzm.param2 == 3) then
+ pzm=1
+ end
+
+ if (string.find(nzp.name, "pipeworks:valve") ~= nil)
+ and (nzp.param2 == 1 or nzp.param2 == 3) then
+ pzp=1
+ end
+
+-- ...flow sensors...
+
+ if (string.find(nxm.name, "pipeworks:flow_sensor") ~= nil)
+ and (nxm.param2 == 0 or nxm.param2 == 2) then
+ pxm=1
+ end
+
+ if (string.find(nxp.name, "pipeworks:flow_sensor") ~= nil)
+ and (nxp.param2 == 0 or nxp.param2 == 2) then
+ pxp=1
+ end
+
+ if (string.find(nzm.name, "pipeworks:flow_sensor") ~= nil)
+ and (nzm.param2 == 1 or nzm.param2 == 3) then
+ pzm=1
+ end
+
+ if (string.find(nzp.name, "pipeworks:flow_sensor") ~= nil)
+ and (nzp.param2 == 1 or nzp.param2 == 3) then
+ pzp=1
+ end
+
+-- ...spigots...
+
+ if (string.find(nxm.name, "pipeworks:spigot") ~= nil)
+ and nxm.param2 == 1 then
+ pxm=1
+ end
+
+ if (string.find(nxp.name, "pipeworks:spigot") ~= nil)
+ and nxp.param2 == 3 then
+ pxp=1
+ end
+
+ if (string.find(nzm.name, "pipeworks:spigot") ~= nil)
+ and nzm.param2 == 0 then
+ pzm=1
+ end
+
+ if (string.find(nzp.name, "pipeworks:spigot") ~= nil)
+ and nzp.param2 == 2 then
+ pzp=1
+ end
+
+-- ...sealed pipe entry/exit...
+
+ if (string.find(nxm.name, "pipeworks:entry_panel") ~= nil)
+ and (nxm.param2 == 1 or nxm.param2 == 3) then
+ pxm=1
+ end
+
+ if (string.find(nxp.name, "pipeworks:entry_panel") ~= nil)
+ and (nxp.param2 == 1 or nxp.param2 == 3) then
+ pxp=1
+ end
+
+ if (string.find(nzm.name, "pipeworks:entry_panel") ~= nil)
+ and (nzm.param2 == 0 or nzm.param2 == 2) then
+ pzm=1
+ end
+
+ if (string.find(nzp.name, "pipeworks:entry_panel") ~= nil)
+ and (nzp.param2 == 0 or nzp.param2 == 2) then
+ pzp=1
+ end
+
+ if (string.find(nym.name, "pipeworks:entry_panel") ~= nil)
+ and nym.param2 == 13 then
+ pym=1
+ end
+
+ if (string.find(nyp.name, "pipeworks:entry_panel") ~= nil)
+ and nyp.param2 == 13 then
+ pyp=1
+ end
+
+
+-- ...pumps, grates...
+
+ if (string.find(nym.name, "pipeworks:grating") ~= nil) or
+ (string.find(nym.name, "pipeworks:pump") ~= nil) then
+ pym=1
+ end
+
+-- ...fountainheads...
+
+ if (string.find(nyp.name, "pipeworks:fountainhead") ~= nil) then
+ pyp=1
+ end
+
+-- ... and storage tanks.
+
+ if (string.find(nym.name, "pipeworks:storage_tank_") ~= nil) then
+ pym=1
+ end
+
+ if (string.find(nyp.name, "pipeworks:storage_tank_") ~= nil) then
+ pyp=1
+ end
+
+-- ...extra devices specified via the function's parameters
+-- ...except that this part is not implemented yet
+--
+-- xxx = nxm, nxp, nym, nyp, nzm, or nzp depending on the direction to check
+-- yyy = pxm, pxp, pym, pyp, pzm, or pzp accordingly.
+--
+-- if string.find(xxx.name, "modname:nodename") ~= nil then
+-- yyy = 1
+-- end
+--
+-- for example:
+--
+-- if string.find(nym.name, "aero:outlet") ~= nil then
+-- pym = 1
+-- end
+--
+
+end
+
+function pipe_look_for_stackable_tanks(pos)
+ local tym = minetest.get_node({ x=pos.x , y=pos.y-1, z=pos.z })
+
+ if string.find(tym.name, "pipeworks:storage_tank_") ~= nil or
+ string.find(tym.name, "pipeworks:expansion_tank_") ~= nil then
+ minetest.add_node(pos, { name = "pipeworks:expansion_tank_0", param2 = tym.param2})
+ end
+end
+
diff --git a/autoplace.lua b/autoplace_tubes.lua
index 4a7d378..1c1a56e 100644
--- a/autoplace.lua
+++ b/autoplace_tubes.lua
@@ -1,109 +1,3 @@
---define the functions from https://github.com/minetest/minetest/pull/834 while waiting for the devs to notice it
-local function dir_to_facedir(dir, is6d)
- --account for y if requested
- if is6d and math.abs(dir.y) > math.abs(dir.x) and math.abs(dir.y) > math.abs(dir.z) then
-
- --from above
- if dir.y < 0 then
- if math.abs(dir.x) > math.abs(dir.z) then
- if dir.x < 0 then
- return 19
- else
- return 13
- end
- else
- if dir.z < 0 then
- return 10
- else
- return 4
- end
- end
-
- --from below
- else
- if math.abs(dir.x) > math.abs(dir.z) then
- if dir.x < 0 then
- return 15
- else
- return 17
- end
- else
- if dir.z < 0 then
- return 6
- else
- return 8
- end
- end
- end
-
- --otherwise, place horizontally
- elseif math.abs(dir.x) > math.abs(dir.z) then
- if dir.x < 0 then
- return 3
- else
- return 1
- end
- else
- if dir.z < 0 then
- return 2
- else
- return 0
- end
- end
-end
-
-local function facedir_to_dir(facedir)
- --a table of possible dirs
- return ({{x=0, y=0, z=1},
- {x=1, y=0, z=0},
- {x=0, y=0, z=-1},
- {x=-1, y=0, z=0},
- {x=0, y=-1, z=0},
- {x=0, y=1, z=0}})
-
- --indexed into by a table of correlating facedirs
- [({[0]=1, 2, 3, 4,
- 5, 2, 6, 4,
- 6, 2, 5, 4,
- 1, 5, 3, 6,
- 1, 6, 3, 5,
- 1, 4, 3, 2})
-
- --indexed into by the facedir in question
- [facedir]]
-end
-
--- autorouting for pipes
-
-function pipe_scanforobjects(pos)
- pipe_autoroute({ x=pos.x-1, y=pos.y , z=pos.z }, "_loaded")
- pipe_autoroute({ x=pos.x+1, y=pos.y , z=pos.z }, "_loaded")
- pipe_autoroute({ x=pos.x , y=pos.y-1, z=pos.z }, "_loaded")
- pipe_autoroute({ x=pos.x , y=pos.y+1, z=pos.z }, "_loaded")
- pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z-1 }, "_loaded")
- pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z+1 }, "_loaded")
- pipe_autoroute(pos, "_loaded")
-
- pipe_autoroute({ x=pos.x-1, y=pos.y , z=pos.z }, "_empty")
- pipe_autoroute({ x=pos.x+1, y=pos.y , z=pos.z }, "_empty")
- pipe_autoroute({ x=pos.x , y=pos.y-1, z=pos.z }, "_empty")
- pipe_autoroute({ x=pos.x , y=pos.y+1, z=pos.z }, "_empty")
- pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z-1 }, "_empty")
- pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z+1 }, "_empty")
- pipe_autoroute(pos, "_empty")
-end
-
-function pipe_autoroute(pos, state)
- nctr = minetest.get_node(pos)
- if (string.find(nctr.name, "pipeworks:pipe_") == nil) then return end
-
- pipes_scansurroundings(pos)
-
- nsurround = pxm..pxp..pym..pyp..pzm..pzp
- if nsurround == "000000" then nsurround = "110000" end
- minetest.add_node(pos, { name = "pipeworks:pipe_"..nsurround..state })
-end
-
-- autorouting for pneumatic tubes
function tube_scanforobjects(pos)
@@ -215,6 +109,8 @@ pipeworks.connects = {
end
}
+
+
--a function for determining which side of the node we are on
local function nodeside(node, tubedir)
--get a vector pointing back
@@ -349,177 +245,3 @@ function tube_autoroute(pos)
local nctr = minetest.get_node(pos)
end
--- auto-rotation code for various devices the tubes attach to
-
-function pipes_scansurroundings(pos)
- pxm=0
- pxp=0
- pym=0
- pyp=0
- pzm=0
- pzp=0
-
- nxm = minetest.get_node({ x=pos.x-1, y=pos.y , z=pos.z })
- nxp = minetest.get_node({ x=pos.x+1, y=pos.y , z=pos.z })
- nym = minetest.get_node({ x=pos.x , y=pos.y-1, z=pos.z })
- nyp = minetest.get_node({ x=pos.x , y=pos.y+1, z=pos.z })
- nzm = minetest.get_node({ x=pos.x , y=pos.y , z=pos.z-1 })
- nzp = minetest.get_node({ x=pos.x , y=pos.y , z=pos.z+1 })
-
- if (string.find(nxm.name, "pipeworks:pipe_") ~= nil) then pxm=1 end
- if (string.find(nxp.name, "pipeworks:pipe_") ~= nil) then pxp=1 end
- if (string.find(nym.name, "pipeworks:pipe_") ~= nil) then pym=1 end
- if (string.find(nyp.name, "pipeworks:pipe_") ~= nil) then pyp=1 end
- if (string.find(nzm.name, "pipeworks:pipe_") ~= nil) then pzm=1 end
- if (string.find(nzp.name, "pipeworks:pipe_") ~= nil) then pzp=1 end
-
--- Special handling for valves...
-
- if (string.find(nxm.name, "pipeworks:valve") ~= nil)
- and (nxm.param2 == 0 or nxm.param2 == 2) then
- pxm=1
- end
-
- if (string.find(nxp.name, "pipeworks:valve") ~= nil)
- and (nxp.param2 == 0 or nxp.param2 == 2) then
- pxp=1
- end
-
- if (string.find(nzm.name, "pipeworks:valve") ~= nil)
- and (nzm.param2 == 1 or nzm.param2 == 3) then
- pzm=1
- end
-
- if (string.find(nzp.name, "pipeworks:valve") ~= nil)
- and (nzp.param2 == 1 or nzp.param2 == 3) then
- pzp=1
- end
-
--- ...flow sensors...
-
- if (string.find(nxm.name, "pipeworks:flow_sensor") ~= nil)
- and (nxm.param2 == 0 or nxm.param2 == 2) then
- pxm=1
- end
-
- if (string.find(nxp.name, "pipeworks:flow_sensor") ~= nil)
- and (nxp.param2 == 0 or nxp.param2 == 2) then
- pxp=1
- end
-
- if (string.find(nzm.name, "pipeworks:flow_sensor") ~= nil)
- and (nzm.param2 == 1 or nzm.param2 == 3) then
- pzm=1
- end
-
- if (string.find(nzp.name, "pipeworks:flow_sensor") ~= nil)
- and (nzp.param2 == 1 or nzp.param2 == 3) then
- pzp=1
- end
-
--- ...spigots...
-
- if (string.find(nxm.name, "pipeworks:spigot") ~= nil)
- and nxm.param2 == 1 then
- pxm=1
- end
-
- if (string.find(nxp.name, "pipeworks:spigot") ~= nil)
- and nxp.param2 == 3 then
- pxp=1
- end
-
- if (string.find(nzm.name, "pipeworks:spigot") ~= nil)
- and nzm.param2 == 0 then
- pzm=1
- end
-
- if (string.find(nzp.name, "pipeworks:spigot") ~= nil)
- and nzp.param2 == 2 then
- pzp=1
- end
-
--- ...sealed pipe entry/exit...
-
- if (string.find(nxm.name, "pipeworks:entry_panel") ~= nil)
- and (nxm.param2 == 1 or nxm.param2 == 3) then
- pxm=1
- end
-
- if (string.find(nxp.name, "pipeworks:entry_panel") ~= nil)
- and (nxp.param2 == 1 or nxp.param2 == 3) then
- pxp=1
- end
-
- if (string.find(nzm.name, "pipeworks:entry_panel") ~= nil)
- and (nzm.param2 == 0 or nzm.param2 == 2) then
- pzm=1
- end
-
- if (string.find(nzp.name, "pipeworks:entry_panel") ~= nil)
- and (nzp.param2 == 0 or nzp.param2 == 2) then
- pzp=1
- end
-
- if (string.find(nym.name, "pipeworks:entry_panel") ~= nil)
- and nym.param2 == 13 then
- pym=1
- end
-
- if (string.find(nyp.name, "pipeworks:entry_panel") ~= nil)
- and nyp.param2 == 13 then
- pyp=1
- end
-
-
--- ...pumps, grates...
-
- if (string.find(nym.name, "pipeworks:grating") ~= nil) or
- (string.find(nym.name, "pipeworks:pump") ~= nil) then
- pym=1
- end
-
--- ...fountainheads...
-
- if (string.find(nyp.name, "pipeworks:fountainhead") ~= nil) then
- pyp=1
- end
-
--- ... and storage tanks.
-
- if (string.find(nym.name, "pipeworks:storage_tank_") ~= nil) then
- pym=1
- end
-
- if (string.find(nyp.name, "pipeworks:storage_tank_") ~= nil) then
- pyp=1
- end
-
--- ...extra devices specified via the function's parameters
--- ...except that this part is not implemented yet
---
--- xxx = nxm, nxp, nym, nyp, nzm, or nzp depending on the direction to check
--- yyy = pxm, pxp, pym, pyp, pzm, or pzp accordingly.
---
--- if string.find(xxx.name, "modname:nodename") ~= nil then
--- yyy = 1
--- end
---
--- for example:
---
--- if string.find(nym.name, "aero:outlet") ~= nil then
--- pym = 1
--- end
---
-
-end
-
-function pipe_look_for_stackable_tanks(pos)
- local tym = minetest.get_node({ x=pos.x , y=pos.y-1, z=pos.z })
-
- if string.find(tym.name, "pipeworks:storage_tank_") ~= nil or
- string.find(tym.name, "pipeworks:expansion_tank_") ~= nil then
- minetest.add_node(pos, { name = "pipeworks:expansion_tank_0", param2 = tym.param2})
- end
-end
-
diff --git a/init.lua b/init.lua
index afbe3a8..897275f 100644
--- a/init.lua
+++ b/init.lua
@@ -108,7 +108,8 @@ end
-- Load the various parts of the mod
-dofile(pipeworks.modpath.."/autoplace.lua")
+dofile(pipeworks.modpath.."/autoplace_pipes.lua")
+dofile(pipeworks.modpath.."/autoplace_tubes.lua")
dofile(pipeworks.modpath.."/item_transport.lua")
dofile(pipeworks.modpath.."/flowing_logic.lua")
dofile(pipeworks.modpath.."/crafts.lua")