deployer changhes
authorMaciej Kasatkin <mk@realbadangel.pl>
Tue, 25 Sep 2012 20:27:56 +0000 (22:27 +0200)
committerMaciej Kasatkin <mk@realbadangel.pl>
Tue, 25 Sep 2012 20:27:56 +0000 (22:27 +0200)
deployer.lua

index 5c0b35e2eb6bffecc1a71099911efdca93762d97..ce3b735436aca97a7fc8d2f4090017b6cfec6676 100644 (file)
@@ -18,7 +18,24 @@ minetest.register_node("technic:deployer_off", {
        sounds = default.node_sound_stone_defaults(),
        on_construct = function(pos)
        local meta = minetest.env:get_meta(pos)
+       meta:set_string("formspec",
+                               "invsize[8,9;]"..
+                               "label[0,0;Deployer]"..
+                               "list[current_name;main;4,1;3,3;]"..
+                               "list[current_player;main;0,5;8,4;]")
+               meta:set_string("infotext", "Deployer")
+               local inv = meta:get_inventory()
+               inv:set_size("main", 3*3)
        end,
+
+       can_dig = function(pos,player)
+               local meta = minetest.env:get_meta(pos);
+               local inv = meta:get_inventory()
+               if not inv:is_empty("main") then
+                       return false
+               end
+               return true
+               end,
        
 })
 
@@ -34,15 +51,37 @@ minetest.register_node("technic:deployer_on", {
 })
 
 mesecon:register_on_signal_on(function(pos, node)
+       local pos1={}
+       pos1.x=pos.x
+       pos1.y=pos.y
+       pos1.z=pos.z
+       if node.param2==3 then pos1.x=pos1.x+1 end
+       if node.param2==2 then pos1.z=pos1.z+1 end
+       if node.param2==1 then pos1.x=pos1.x-1 end
+       if node.param2==0 then pos1.z=pos1.z-1 end
+
        if node.name == "technic:deployer_off" then
-               minetest.env:add_node(pos, {name="technic:deployer_on", param2 = node.param2})
+               hacky_swap_node(pos,"technic:deployer_on")
                nodeupdate(pos)
+                       local meta = minetest.env:get_meta(pos);
+               
+               local inv = meta:get_inventory()
+               print (dump(inv))
+               for _,stack in ipairs(inv:get_list("main")) do
+               print (dump(stack:get_name()))
+
+               if stack:get_name() ~=nil then 
+                       node1={name=stack:get_name(), param1=0, param2=node.param2}
+                       minetest.env:place_node(pos1,node1)
+                       return
+                       end
+       end
        end
 end)
 
 mesecon:register_on_signal_off(function(pos, node)
        if node.name == "technic:deployer_on" then
-               minetest.env:add_node(pos, {name="technic:deployer_off", param2 = node.param2})
+               hacky_swap_node(pos,"technic:deployer_off")
                nodeupdate(pos)
        end
 end)