add flow sensor. Sends mesecons signal when water is flowing through it.
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Fri, 10 May 2013 22:28:57 +0000 (18:28 -0400)
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Fri, 10 May 2013 22:28:57 +0000 (18:28 -0400)
autoplace.lua
crafts.lua
devices.lua
flowing_logic.lua
optdepends.txt [new file with mode: 0644]

index dbcc423a45f31a5bc854effd3e8db7f93e342b43..ddfdb76b3e72d8854b0fd49faf531315abf64522 100644 (file)
@@ -143,6 +143,28 @@ function pipes_scansurroundings(pos)
                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)
index 700543b055aa84f2cffe2f7823b80190f2e39933..25c57b6478de7040781fffade8ebbd52209b1f6d 100644 (file)
@@ -64,6 +64,13 @@ minetest.register_craft( {
         },
 })
 
+minetest.register_craft( {
+        output = "pipeworks:flow_sensor_empty 2",
+        recipe = {
+                { "pipeworks:pipe_110000_empty", "mesecons:mesecon", "pipeworks:pipe_110000_empty" },
+        },
+})
+
 
 -- Various ancillary tube devices
 
@@ -164,7 +171,6 @@ if minetest.get_modpath("homedecor") == nil then
 
 end
 
-
 -- If the technic mod is present, then don't bother registering the recipes
 -- for the various tubes, as technic has its own recipes for those.
 
index dcd5967d5730562c98e76fe6400b0f350bd09924..3cbf71a9992f2535ee19937ddf5771dcad50180a 100644 (file)
@@ -1,5 +1,19 @@
 -- List of devices that should participate in the autoplace algorithm
 
+if mesecon then
+       pipereceptor_on = {
+               receptor = {
+                       state = mesecon.state.on
+               }
+       }
+
+       pipereceptor_off = {
+               receptor = {
+                       state = mesecon.state.off
+               }
+       }
+end
+
 pipes_devicelist = {
        "pump",
        "valve",
@@ -35,6 +49,10 @@ pipe_valvehandle_off = {
        { -1/16, 4/16, -5/16, 1/16, 5/16, 0 }
 }
 
+pipe_sensorbody = {
+       { -3/16, -2/16, -2/16, 3/16, 2/16, 2/16 }
+}
+
 spigot_bottomstub = {
        { -2/64, -16/64, -6/64,   2/64, 1/64, 6/64 },   -- pipe segment against -Y face
        { -4/64, -16/64, -5/64,   4/64, 1/64, 5/64 },
@@ -439,6 +457,98 @@ minetest.register_node("pipeworks:entry_panel_loaded", {
        drop = "pipeworks:entry_panel_empty"
 })
 
+local sensorboxes = {}
+pipe_addbox(sensorboxes, pipe_leftstub)
+pipe_addbox(sensorboxes, pipe_sensorbody)
+pipe_addbox(sensorboxes, pipe_rightstub)
+
+minetest.register_node("pipeworks:flow_sensor_empty", {
+       description = "Flow Sensor",
+       drawtype = "nodebox",
+       tiles = {
+               "pipeworks_plain.png",
+               "pipeworks_plain.png",
+               "pipeworks_plain.png",
+               "pipeworks_plain.png",
+               "pipeworks_windowed_empty.png",
+               "pipeworks_windowed_empty.png"
+       },
+       paramtype = "light",
+       paramtype2 = "facedir",
+       groups = {snappy=3, pipe=1},
+       sounds = default.node_sound_wood_defaults(),
+       walkable = true,
+       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)
+               meta:set_int("pipelike",1)
+               if mesecon then
+                       mesecon:receptor_off(pos, rules) 
+               end
+       end,
+       node_box = {
+               type = "fixed",
+               fixed = sensorboxes,
+       },
+       selection_box = {
+               type = "fixed",
+               fixed = {
+                       { -8/16, -2/16, -2/16, 8/16, 2/16, 2/16 },
+               }
+       },
+       mesecons = pipereceptor_off
+})
+
+minetest.register_node("pipeworks:flow_sensor_loaded", {
+       description = "Flow sensor (on)",
+       drawtype = "nodebox",
+       tiles = {
+               "pipeworks_plain.png",
+               "pipeworks_plain.png",
+               "pipeworks_plain.png",
+               "pipeworks_plain.png",
+               pipeworks_liquid_texture.."^pipeworks_windowed_loaded.png",
+               pipeworks_liquid_texture.."^pipeworks_windowed_loaded.png"
+       },
+       paramtype = "light",
+       paramtype2 = "facedir",
+       groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
+       sounds = default.node_sound_wood_defaults(),
+       walkable = true,
+       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)
+               meta:set_int("pipelike",1)
+               if mesecon then
+                       mesecon:receptor_on(pos, rules) 
+               end
+       end,
+       node_box = {
+               type = "fixed",
+               fixed = sensorboxes,
+       },
+       selection_box = {
+               type = "fixed",
+               fixed = {
+                       { -8/16, -2/16, -2/16, 8/16, 2/16, 2/16 },
+               }
+       },
+       drop = "pipeworks:flow_sensor_empty",
+       mesecons = pipereceptor_on
+})
+
 -- tanks
 
 for fill = 0, 10 do
index e633983ceb0b46308a3328e6e911cba63f6e255b..a375aeb436d927fec9052202af467ed2912f918c 100644 (file)
@@ -104,11 +104,13 @@ table.insert(pipes_empty_nodenames,"pipeworks:valve_on_empty")
 table.insert(pipes_empty_nodenames,"pipeworks:valve_off_empty")
 table.insert(pipes_empty_nodenames,"pipeworks:valve_on_loaded")
 table.insert(pipes_empty_nodenames,"pipeworks:entry_panel_empty")
+table.insert(pipes_empty_nodenames,"pipeworks:flow_sensor_empty")
 
 table.insert(pipes_full_nodenames,"pipeworks:valve_on_empty")
 table.insert(pipes_full_nodenames,"pipeworks:valve_off_empty")
 table.insert(pipes_full_nodenames,"pipeworks:valve_on_loaded")
 table.insert(pipes_full_nodenames,"pipeworks:entry_panel_loaded")
+table.insert(pipes_full_nodenames,"pipeworks:flow_sensor_loaded")
 
 minetest.register_abm({
        nodenames = pipes_empty_nodenames,
diff --git a/optdepends.txt b/optdepends.txt
new file mode 100644 (file)
index 0000000..d92a438
--- /dev/null
@@ -0,0 +1,2 @@
+mesecons
+