Made storage tank participate in autoplace algorithm. Tuned API a
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Tue, 21 Aug 2012 17:52:25 +0000 (13:52 -0400)
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Tue, 21 Aug 2012 17:52:25 +0000 (13:52 -0400)
little to allow for more flexible placement.

autoplace.lua
changelog.txt
devices.lua

index 2b9a92f95bacffec2db980b46b43d9466dba4779..04c2acbf9191681a937c720fee6f6c21984ffcc1 100644 (file)
@@ -25,9 +25,8 @@ function pipe_autoroute(pos, state)
        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, "valve")
-       pipe_checkfordevice(pos, "pump")
-       
+       pipe_checkfordevice(pos)
+
        nsurround = pxm..pxp..pym..pyp..pzm..pzp
        
        if nsurround == "000000" then nsurround = "110000" end
@@ -37,6 +36,12 @@ end
 
 function pipe_device_autorotate(pos, state, bname)
 
+       if state == nil then
+               nname = bname
+       else
+               nname = bname.."_"..state
+       end
+
        local nctr = minetest.env:get_node(pos)
 
        pxm=0
@@ -54,39 +59,45 @@ function pipe_device_autorotate(pos, state, bname)
        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, "pump")
-       pipe_checkfordevice(pos, "valve")
+       pipe_checkfordevice(pos)
 
        if (pxm+pxp) ~= 0 then
-               minetest.env:add_node(pos, { name = bname..state.."_x" })
+               minetest.env:add_node(pos, { name = nname.."_x" })
                return
        end
 
        if (pzm+pzp) ~= 0 then
-               minetest.env:add_node(pos, { name = bname..state.."_z" })
+               minetest.env:add_node(pos, { name = nname.."_z" })
        end
        
 end
 
-pipe_checkfordevice = function(pos, bname)
-       if (string.find(nxm.name, "pipeworks:"..bname.."_off_x") ~= nil) or
-          (string.find(nxm.name, "pipeworks:"..bname.."_on_x") ~= nil) then
-               pxm=1
-       end
-
-       if (string.find(nxp.name, "pipeworks:"..bname.."_off_x") ~= nil) or
-          (string.find(nxp.name, "pipeworks:"..bname.."_on_x") ~= nil) then
-               pxp=1
-       end
-
-       if (string.find(nzm.name, "pipeworks:"..bname.."_off_z") ~= nil) or
-          (string.find(nzm.name, "pipeworks:"..bname.."_on_z") ~= nil) then
-               pzm=1
-       end
-
-       if (string.find(nzp.name, "pipeworks:"..bname.."_off_z") ~= nil) or
-          (string.find(nzp.name, "pipeworks:"..bname.."_on_z") ~= nil) then
-               pzp=1
+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
+                  (string.find(nxm.name, "pipeworks:"..pdev.."_on_x") ~= nil) or
+                  (string.find(nxm.name, "pipeworks:"..pdev.."_x") ~= nil) then
+                       pxm=1
+               end
+
+               if (string.find(nxp.name, "pipeworks:"..pdev.."_off_x") ~= nil) or
+                  (string.find(nxp.name, "pipeworks:"..pdev.."_on_x") ~= nil) or
+                  (string.find(nxp.name, "pipeworks:"..pdev.."_x") ~= nil)  then
+                       pxp=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
+                       pzm=1
+               end
+
+               if (string.find(nzp.name, "pipeworks:"..pdev.."_off_z") ~= nil) or
+                  (string.find(nzp.name, "pipeworks:"..pdev.."_on_z") ~= nil) or
+                  (string.find(nzp.name, "pipeworks:"..pdev.."_z") ~= nil)  then
+                       pzp=1
+               end
        end
 end
 
index 8e253352dbdb235bed24f396e9e3a22539c87087..1ce34d8e6d645e2c9a26b053c71cde825a682741 100644 (file)
@@ -1,6 +1,12 @@
 Changelog
 ---------
 
+2012-08-21: Made storage tank participate in autoplace algorithm.  Tuned API a 
+little to allow for more flexible placement.
+
+2012-08-20: Added temporary nodes for storage tank and intake grating, but 
+without autoplace.
+
 2012-08-19: Pumps and valves now fully participate in the 
 auto-rotate/auto-place algorithm.
 
index b490d015f2ad928845905c4c30146d1f37a3ffa8..9d2578cc0d9d4976e9a56b7b8e086e4dfb1efae8 100644 (file)
@@ -1,3 +1,11 @@
+-- List of devices for use by the autoplace algorithm
+
+pipes_devicelist = {
+       "pump",
+       "valve",
+       "storage_tank"
+}
+
 -- tables
 
 minetest.register_alias("pipeworks:pump", "pipeworks:pump_off_x")
@@ -82,7 +90,7 @@ for s in ipairs(states) do
                walkable = true,
                stack_max = 99,
                after_place_node = function(pos)
-                       pipe_device_autorotate(pos, states[s], "pipeworks:pump_")
+                       pipe_device_autorotate(pos, states[s], "pipeworks:pump")
                        pipe_scanforobjects(pos)
                end,
                after_dig_node = function(pos)
@@ -121,7 +129,7 @@ for s in ipairs(states) do
                walkable = true,
                stack_max = 99,
                after_place_node = function(pos)
-                       pipe_device_autorotate(pos, states[s], "pipeworks:pump_")
+                       pipe_device_autorotate(pos, states[s], "pipeworks:pump")
                        pipe_scanforobjects(pos)
                end,
                after_dig_node = function(pos)
@@ -167,7 +175,7 @@ for s in ipairs(states) do
                walkable = true,
                stack_max = 99,
                after_place_node = function(pos)
-                       pipe_device_autorotate(pos, states[s], "pipeworks:valve_")
+                       pipe_device_autorotate(pos, states[s], "pipeworks:valve")
                        pipe_scanforobjects(pos)
                end,
                after_dig_node = function(pos)
@@ -216,7 +224,7 @@ for s in ipairs(states) do
                walkable = true,
                stack_max = 99,
                after_place_node = function(pos)
-                       pipe_device_autorotate(pos, states[s], "pipeworks:valve_")
+                       pipe_device_autorotate(pos, states[s], "pipeworks:valve")
                        pipe_scanforobjects(pos)
 
                end,
@@ -258,6 +266,12 @@ minetest.register_node("pipeworks:intake", {
        sounds = default.node_sound_wood_defaults(),
        walkable = true,
        stack_max = 99,
+       after_place_node = function(pos)
+               pipe_scanforobjects(pos)
+       end,
+       after_dig_node = function(pos)
+               pipe_scanforobjects(pos)
+       end,
        pipelike=1,
        on_construct = function(pos)
        local meta = minetest.env:get_meta(pos)
@@ -282,6 +296,13 @@ minetest.register_node("pipeworks:storage_tank_x", {
        sounds = default.node_sound_wood_defaults(),
        walkable = true,
        stack_max = 99,
+       after_place_node = function(pos)
+               pipe_device_autorotate(pos, nil, "pipeworks:storage_tank")
+               pipe_scanforobjects(pos)
+       end,
+       after_dig_node = function(pos)
+               pipe_scanforobjects(pos)
+       end,
        pipelike=1,
        on_construct = function(pos)
        local meta = minetest.env:get_meta(pos)
@@ -304,6 +325,14 @@ minetest.register_node("pipeworks:storage_tank_z", {
        sounds = default.node_sound_wood_defaults(),
        walkable = true,
        stack_max = 99,
+       drop = "pipeworks:storage_tank_x",
+       after_place_node = function(pos)
+               pipe_device_autorotate(pos, nil, "pipeworks:storage_tank")
+               pipe_scanforobjects(pos)
+       end,
+       after_dig_node = function(pos)
+               pipe_scanforobjects(pos)
+       end,
        pipelike=1,
        on_construct = function(pos)
        local meta = minetest.env:get_meta(pos)