reorganized code a bit to allow for upcoming rules changes.
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Tue, 21 Aug 2012 18:32:44 +0000 (14:32 -0400)
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Tue, 21 Aug 2012 18:32:44 +0000 (14:32 -0400)
autoplace.lua
changelog.txt
init.lua

index 04c2acbf9191681a937c720fee6f6c21984ffcc1..d8377a5036d97006d3204ead90c1ba81c00e6f21 100644 (file)
@@ -1,31 +1,27 @@
+pipe_scanforobjects = function(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.env:get_node(pos)
        if (string.find(nctr.name, "pipeworks:pipe_") == nil) then return end
 
-       pxm=0
-       pxp=0
-       pym=0
-       pyp=0
-       pzm=0
-       pzp=0
-
-       nxm = minetest.env:get_node({ x=pos.x-1, y=pos.y  , z=pos.z   })
-       nxp = minetest.env:get_node({ x=pos.x+1, y=pos.y  , z=pos.z   })
-       nym = minetest.env:get_node({ x=pos.x  , y=pos.y-1, z=pos.z   })
-       nyp = minetest.env:get_node({ x=pos.x  , y=pos.y+1, z=pos.z   })
-       nzm = minetest.env:get_node({ x=pos.x  , y=pos.y  , z=pos.z-1 })
-       nzp = minetest.env: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
-
-       pipe_checkfordevice(pos)
+       pipes_scansurroundings(pos)
 
        nsurround = pxm..pxp..pym..pyp..pzm..pzp
        
@@ -44,35 +40,41 @@ function pipe_device_autorotate(pos, state, bname)
 
        local nctr = minetest.env:get_node(pos)
 
+       pipes_scansurroundings(pos)
+
+       if (pxm+pxp) ~= 0 then
+               minetest.env:add_node(pos, { name = nname.."_x" })
+               return
+       end
+
+       if (pzm+pzp) ~= 0 then
+               minetest.env:add_node(pos, { name = nname.."_z" })
+       end
+       
+end
+
+pipes_scansurroundings = function(pos)
        pxm=0
        pxp=0
+       pym=0
+       pyp=0
        pzm=0
        pzp=0
 
        nxm = minetest.env:get_node({ x=pos.x-1, y=pos.y  , z=pos.z   })
        nxp = minetest.env:get_node({ x=pos.x+1, y=pos.y  , z=pos.z   })
+       nym = minetest.env:get_node({ x=pos.x  , y=pos.y-1, z=pos.z   })
+       nyp = minetest.env:get_node({ x=pos.x  , y=pos.y+1, z=pos.z   })
        nzm = minetest.env:get_node({ x=pos.x  , y=pos.y  , z=pos.z-1 })
        nzp = minetest.env: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
 
-       pipe_checkfordevice(pos)
-
-       if (pxm+pxp) ~= 0 then
-               minetest.env:add_node(pos, { name = nname.."_x" })
-               return
-       end
-
-       if (pzm+pzp) ~= 0 then
-               minetest.env:add_node(pos, { name = nname.."_z" })
-       end
-       
-end
-
-pipe_checkfordevice = function(pos)
        for p in ipairs(pipes_devicelist) do
                pdev = pipes_devicelist[p]
                if (string.find(nxm.name, "pipeworks:"..pdev.."_off_x") ~= nil) or
@@ -87,6 +89,19 @@ pipe_checkfordevice = function(pos)
                        pxp=1
                end
 
+               if (string.find(nym.name, "pipeworks:"..pdev.."_off_z") ~= nil) or
+                  (string.find(nym.name, "pipeworks:"..pdev.."_on_z") ~= nil) or
+                  (string.find(nym.name, "pipeworks:"..pdev.."_z") ~= nil)  then
+                       pym=1
+               end
+
+               if (string.find(nyp.name, "pipeworks:"..pdev.."_off_z") ~= nil) or
+                  (string.find(nyp.name, "pipeworks:"..pdev.."_on_z") ~= nil) or
+                  (string.find(nyp.name, "pipeworks:"..pdev.."_z") ~= nil)  then
+                       pyp=1
+               end
+
+
                if (string.find(nzm.name, "pipeworks:"..pdev.."_off_z") ~= nil) or
                   (string.find(nzm.name, "pipeworks:"..pdev.."_on_z") ~= nil) or
                   (string.find(nzm.name, "pipeworks:"..pdev.."_z") ~= nil)  then
@@ -101,15 +116,3 @@ pipe_checkfordevice = function(pos)
        end
 end
 
-pipe_scanforobjects = function(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  , z=pos.z-1 }, "_loaded")
-       pipe_autoroute({ x=pos.x  , y=pos.y  , z=pos.z+1 }, "_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  , z=pos.z-1 }, "_empty")
-       pipe_autoroute({ x=pos.x  , y=pos.y  , z=pos.z+1 }, "_empty")
-end
-
index 1ce34d8e6d645e2c9a26b053c71cde825a682741..6969087b19290647b623a30c1ba8b0625ee47fdf 100644 (file)
@@ -2,7 +2,8 @@ Changelog
 ---------
 
 2012-08-21: Made storage tank participate in autoplace algorithm.  Tuned API a 
-little to allow for more flexible placement.
+little to allow for more flexible placement.  Re-organized code a bit to allow 
+for some upcoming rules changes.
 
 2012-08-20: Added temporary nodes for storage tank and intake grating, but 
 without autoplace.
index db18d8d6b03d5403e27c4781c03abdf640e6afe4..bfab761975410c6431c9ec2f4f04d3ff7cc7b31e 100644 (file)
--- a/init.lua
+++ b/init.lua
@@ -270,21 +270,10 @@ for zp = 0, 1 do
                meta:set_int("pipelike",1)
                end,
                after_place_node = function(pos)
-                       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")
+                       pipe_scanforobjects(pos)
                end,
                after_dig_node = function(pos)
-                       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_scanforobjects(pos)
                end
        })
 
@@ -312,21 +301,10 @@ for zp = 0, 1 do
                meta:set_int("pipelike",1)
                end,
                after_place_node = function(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_scanforobjects(pos)
                end,
                after_dig_node = function(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_scanforobjects(pos)
                end
        })
 end