local-ize a few more functions
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Sun, 15 Dec 2013 10:35:11 +0000 (05:35 -0500)
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Sun, 15 Dec 2013 10:40:26 +0000 (05:40 -0500)
autoplace_tubes.lua
item_transport.lua

index cbca2ba26f2b1c3a1b810abf3debb52b0de8b1db..7f47488fa30964962e59d075093d5eed2364db06 100644 (file)
@@ -1,24 +1,13 @@
 -- autorouting for pneumatic tubes
 
-function pipeworks.scan_for_tube_objects(pos)
-       if pos == nil then return end
-       tube_autoroute({ x=pos.x-1, y=pos.y  , z=pos.z   })
-       tube_autoroute({ x=pos.x+1, y=pos.y  , z=pos.z   })
-       tube_autoroute({ x=pos.x  , y=pos.y-1, z=pos.z   })
-       tube_autoroute({ x=pos.x  , y=pos.y+1, z=pos.z   })
-       tube_autoroute({ x=pos.x  , y=pos.y  , z=pos.z-1 })
-       tube_autoroute({ x=pos.x  , y=pos.y  , z=pos.z+1 })
-       tube_autoroute(pos)
-end
-
-function in_table(table,element)
+local function in_table(table,element)
        for _,el in ipairs(table) do
                if el==element then return true end
        end
        return false
 end
 
-function is_tube(nodename)
+local function is_tube(nodename)
        return in_table(tubenodes,nodename)
 end
 
@@ -84,7 +73,7 @@ local function nodeside(node, tubedir)
     minetest.log("error", "nodeside has been confused by its parameters; see pipeworks autoplace_tubes.lua, line 78")
 end
 
-function tube_autoroute(pos)
+local function tube_autoroute(pos)
        local active = {0, 0, 0, 0, 0, 0}
     local nctr = minetest.get_node(pos)
     if not is_tube(nctr.name) then return end
@@ -135,6 +124,17 @@ function tube_autoroute(pos)
        local nctr = minetest.get_node(pos)
 end
 
+function pipeworks.scan_for_tube_objects(pos)
+       if pos == nil then return end
+       tube_autoroute({ x=pos.x-1, y=pos.y  , z=pos.z   })
+       tube_autoroute({ x=pos.x+1, y=pos.y  , z=pos.z   })
+       tube_autoroute({ x=pos.x  , y=pos.y-1, z=pos.z   })
+       tube_autoroute({ x=pos.x  , y=pos.y+1, z=pos.z   })
+       tube_autoroute({ x=pos.x  , y=pos.y  , z=pos.z-1 })
+       tube_autoroute({ x=pos.x  , y=pos.y  , z=pos.z+1 })
+       tube_autoroute(pos)
+end
+
 minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack)
        if minetest.registered_items[newnode.name]
          and minetest.registered_items[newnode.name].tube
index 632919aa29135f33efa144467fcb8ba59f95f909..93e95804aeba70921341133a374a1ae718fa3361 100644 (file)
@@ -29,6 +29,14 @@ local fakePlayer = {
     -- perhaps a custom metaclass that errors specially when fakePlayer.<property> is not found?
 }
 
+local function tube_item(pos, item)
+       -- Take item in any format
+       local stack = ItemStack(item)
+       local obj = minetest.add_entity(pos, "pipeworks:tubed_item")
+       obj:get_luaentity():set_item(stack:to_string())
+       return obj
+end
+
 -- adding two tube functions
 -- can_remove(pos,node,stack,dir) returns true if an item can be removed from that stack on that node
 -- remove_items(pos,node,stack,dir,count) removes count items and returns them
@@ -37,7 +45,7 @@ local fakePlayer = {
 
 -- sname = the current name to allow for, or nil if it allows anything
 
-function grabAndFire(frominv,frominvname,frompos,fromnode,sname,tube,idef,dir,all)
+local function grabAndFire(frominv,frominvname,frompos,fromnode,sname,tube,idef,dir,all)
     for spos,stack in ipairs(frominv:get_list(frominvname)) do
         if ( sname == nil and stack:get_name() ~= "") or stack:get_name()==sname then
             local doRemove = true
@@ -204,18 +212,129 @@ minetest.register_node("pipeworks:mese_filter", {
 end,
 })
 
-function tube_item(pos, item)
-       -- Take item in any format
-       local stack = ItemStack(item)
-       local obj = minetest.add_entity(pos, "pipeworks:tubed_item")
-       obj:get_luaentity():set_item(stack:to_string())
-       return obj
-end
-
 local function roundpos(pos)
        return {x=math.floor(pos.x+0.5),y=math.floor(pos.y+0.5),z=math.floor(pos.z+0.5)}
 end
 
+local function addVect(pos,vect)
+       return {x=pos.x+vect.x,y=pos.y+vect.y,z=pos.z+vect.z}
+end
+
+adjlist={{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=0,y=1,z=0},{x=0,y=-1,z=0},{x=1,y=0,z=0},{x=-1,y=0,z=0}}
+
+local function notvel(tbl,vel)
+       local tbl2={}
+       for _,val in ipairs(tbl) do
+               if val.x~=-vel.x or val.y~=-vel.y or val.z~=-vel.z then table.insert(tbl2,val) end
+       end
+       return tbl2
+end
+
+local function go_next(pos,velocity,stack)
+       local chests={}
+       local tubes={}
+       local cnode=minetest.get_node(pos)
+       local cmeta=minetest.get_meta(pos)
+       local node
+       local meta
+       local tubelike
+       local tube_receiver
+       local len=1
+       local n
+       local can_go
+       local speed=math.abs(velocity.x+velocity.y+velocity.z)
+       local vel={x=velocity.x/speed,y=velocity.y/speed,z=velocity.z/speed,speed=speed}
+       if speed>=4.1 then
+               speed=4
+       elseif speed>=1.1 then
+               speed=speed-0.1
+       else
+               speed=1
+       end
+       vel.speed=speed
+       if minetest.registered_nodes[cnode.name] and minetest.registered_nodes[cnode.name].tube and minetest.registered_nodes[cnode.name].tube.can_go then
+               can_go=minetest.registered_nodes[cnode.name].tube.can_go(pos,node,vel,stack)
+       else
+               can_go=notvel(adjlist,vel)
+       end
+       for _,vect in ipairs(can_go) do
+               npos=addVect(pos,vect)
+               node=minetest.get_node(npos)
+               tube_receiver=minetest.get_item_group(node.name,"tubedevice_receiver")
+               meta=minetest.get_meta(npos)
+               tubelike=meta:get_int("tubelike")
+               if tube_receiver==1 then
+                       if minetest.registered_nodes[node.name].tube and
+                               minetest.registered_nodes[node.name].tube.can_insert and
+                               minetest.registered_nodes[node.name].tube.can_insert(npos,node,stack,vect) then
+                               local i=1
+                               repeat
+                                       if chests[i]==nil then break end
+                                       i=i+1
+                               until false
+                               chests[i]={}
+                               chests[i].pos=npos
+                               chests[i].vect=vect
+                       end
+               elseif tubelike==1 then
+                       local i=1
+                       repeat
+                               if tubes[i]==nil then break end
+                               i=i+1
+                       until false
+                       tubes[i]={}
+                       tubes[i].pos=npos
+                       tubes[i].vect=vect
+               end
+       end
+       if chests[1]==nil then--no chests found
+               if tubes[1]==nil then
+                       return 0
+               else
+                       local i=1
+                       repeat
+                               if tubes[i]==nil then break end
+                               i=i+1
+                       until false
+                       n=meta:get_int("tubedir")+1
+                       repeat
+                               if n>=i then
+                                       n=n-i+1
+                               else
+                                       break
+                               end
+                       until false
+                       if pipeworks.enable_cyclic_mode then
+                               meta:set_int("tubedir",n)
+                       end
+                       velocity.x=tubes[n].vect.x*vel.speed
+                       velocity.y=tubes[n].vect.y*vel.speed
+                       velocity.z=tubes[n].vect.z*vel.speed
+               end
+       else
+               local i=1
+               repeat
+                       if chests[i]==nil then break end
+                       i=i+1
+               until false
+               n=meta:get_int("tubedir")+1
+               repeat
+                       if n>=i then
+                               n=n-i+1
+                       else
+                               break
+                       end
+               until false
+               if pipeworks.enable_cyclic_mode then
+                       meta:set_int("tubedir",n)
+               end
+               velocity.x=chests[n].vect.x*speed
+               velocity.y=chests[n].vect.y*speed
+               velocity.z=chests[n].vect.z*speed
+       end
+       return 1
+end
+
 minetest.register_entity("pipeworks:tubed_item", {
        initial_properties = {
                hp_max = 1,
@@ -383,121 +502,4 @@ end
 })
 
 
-local function addVect(pos,vect)
-       return {x=pos.x+vect.x,y=pos.y+vect.y,z=pos.z+vect.z}
-end
-
-adjlist={{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=0,y=1,z=0},{x=0,y=-1,z=0},{x=1,y=0,z=0},{x=-1,y=0,z=0}}
 
-function notvel(tbl,vel)
-       local tbl2={}
-       for _,val in ipairs(tbl) do
-               if val.x~=-vel.x or val.y~=-vel.y or val.z~=-vel.z then table.insert(tbl2,val) end
-       end
-       return tbl2
-end
-
-function go_next(pos,velocity,stack)
-       local chests={}
-       local tubes={}
-       local cnode=minetest.get_node(pos)
-       local cmeta=minetest.get_meta(pos)
-       local node
-       local meta
-       local tubelike
-       local tube_receiver
-       local len=1
-       local n
-       local can_go
-       local speed=math.abs(velocity.x+velocity.y+velocity.z)
-       local vel={x=velocity.x/speed,y=velocity.y/speed,z=velocity.z/speed,speed=speed}
-       if speed>=4.1 then
-               speed=4
-       elseif speed>=1.1 then
-               speed=speed-0.1
-       else
-               speed=1
-       end
-       vel.speed=speed
-       if minetest.registered_nodes[cnode.name] and minetest.registered_nodes[cnode.name].tube and minetest.registered_nodes[cnode.name].tube.can_go then
-               can_go=minetest.registered_nodes[cnode.name].tube.can_go(pos,node,vel,stack)
-       else
-               can_go=notvel(adjlist,vel)
-       end
-       for _,vect in ipairs(can_go) do
-               npos=addVect(pos,vect)
-               node=minetest.get_node(npos)
-               tube_receiver=minetest.get_item_group(node.name,"tubedevice_receiver")
-               meta=minetest.get_meta(npos)
-               tubelike=meta:get_int("tubelike")
-               if tube_receiver==1 then
-                       if minetest.registered_nodes[node.name].tube and
-                               minetest.registered_nodes[node.name].tube.can_insert and
-                               minetest.registered_nodes[node.name].tube.can_insert(npos,node,stack,vect) then
-                               local i=1
-                               repeat
-                                       if chests[i]==nil then break end
-                                       i=i+1
-                               until false
-                               chests[i]={}
-                               chests[i].pos=npos
-                               chests[i].vect=vect
-                       end
-               elseif tubelike==1 then
-                       local i=1
-                       repeat
-                               if tubes[i]==nil then break end
-                               i=i+1
-                       until false
-                       tubes[i]={}
-                       tubes[i].pos=npos
-                       tubes[i].vect=vect
-               end
-       end
-       if chests[1]==nil then--no chests found
-               if tubes[1]==nil then
-                       return 0
-               else
-                       local i=1
-                       repeat
-                               if tubes[i]==nil then break end
-                               i=i+1
-                       until false
-                       n=meta:get_int("tubedir")+1
-                       repeat
-                               if n>=i then
-                                       n=n-i+1
-                               else
-                                       break
-                               end
-                       until false
-                       if pipeworks.enable_cyclic_mode then
-                               meta:set_int("tubedir",n)
-                       end
-                       velocity.x=tubes[n].vect.x*vel.speed
-                       velocity.y=tubes[n].vect.y*vel.speed
-                       velocity.z=tubes[n].vect.z*vel.speed
-               end
-       else
-               local i=1
-               repeat
-                       if chests[i]==nil then break end
-                       i=i+1
-               until false
-               n=meta:get_int("tubedir")+1
-               repeat
-                       if n>=i then
-                               n=n-i+1
-                       else
-                               break
-                       end
-               until false
-               if pipeworks.enable_cyclic_mode then
-                       meta:set_int("tubedir",n)
-               end
-               velocity.x=chests[n].vect.x*speed
-               velocity.y=chests[n].vect.y*speed
-               velocity.z=chests[n].vect.z*speed
-       end
-       return 1
-end