Added API for registering power tools
authorMaciej Kasatkin <mk@realbadangel.pl>
Tue, 11 Sep 2012 18:15:12 +0000 (20:15 +0200)
committerMaciej Kasatkin <mk@realbadangel.pl>
Tue, 11 Sep 2012 18:15:12 +0000 (20:15 +0200)
electric.lua
mining_drill.lua

index deaa59625ecf3970a5f0b57c42c2249481fabc79..0faee798106a439f751666160b2af829ff0bc209 100644 (file)
@@ -1,3 +1,18 @@
+power_tools ={}
+
+registered_power_tools_count=1
+
+function register_power_tool (string1,max_charge)
+power_tools[registered_power_tools_count]={}
+power_tools[registered_power_tools_count].tool_name=string1
+power_tools[registered_power_tools_count].max_charge=max_charge
+registered_power_tools_count=registered_power_tools_count+1
+end
+
+register_power_tool ("technic:mining_drill",60000)
+register_power_tool ("technic:laser_mk1",40000)
+register_power_tool ("technic:battery",10000)
+
 minetest.register_alias("battery", "technic:battery")
 minetest.register_alias("battery_box", "technic:battery_box")
 minetest.register_alias("electric_furnace", "technic:electric_furnace")
@@ -31,12 +46,6 @@ minetest.register_craft({
 })
 
 
---minetest.register_craftitem("technic:battery", {
---     description = "Recharcheable battery",
---     inventory_image = "technic_battery.png",
---     stack_max = 1,
---}) 
-
 minetest.register_tool("technic:battery",
 {description = "RE Battery",
 inventory_image = "technic_battery.png",
@@ -295,72 +304,36 @@ minetest.register_abm({
        local meta = minetest.env:get_meta(pos)
        charge= meta:get_float("battery_charge")
        max_charge= 60000
-               
-               local inv = meta:get_inventory()
-               if inv:is_empty("src")==false  then 
-               srcstack = inv:get_stack("src", 1)
-               src_item=srcstack:to_table()
-               if src_item["name"]== "technic:battery" then
-               local load1=tonumber((src_item["wear"])) 
-               load1=get_RE_item_load(load1,10000)
-               load_step=1000
-               if load1<10000 and charge>0 then 
-                if charge-load_step<0 then load_step=charge end
-                if load1+load_step>10000 then load_step=10000-load1 end
-               load1=load1+load_step
-               charge=charge-load_step
-       
-               load1=set_RE_item_load(load1,10000)
-               src_item["wear"]=tostring(load1)
-               inv:set_stack("src", 1, src_item)
-               end             
-               end
-               end
-               meta:set_float("battery_charge",charge)
-               
-       
-               if inv:is_empty("src")==false  then 
+
+       local inv = meta:get_inventory()
+       if inv:is_empty("src")==false  then 
                srcstack = inv:get_stack("src", 1)
                src_item=srcstack:to_table()
-               if src_item["name"]== "technic:laser_mk1" then
-               local load1=tonumber((src_item["wear"])) 
-               load1=get_RE_item_load(load1,40000)
-               load_step=1000
-               if load1<40000 and charge>0 then 
-                if charge-load_step<0 then load_step=charge end
-                if load1+load_step>40000 then load_step=40000-load1 end
-               load1=load1+load_step
-               charge=charge-load_step
-               load1=set_RE_item_load(load1,40000)
-               src_item["wear"]=tostring(load1)
-               inv:set_stack("src", 1, src_item)
-               end             
+       local item_max_charge = nil
+       local counter=registered_power_tools_count-1
+       for i=1, counter,1 do
+               if power_tools[i].tool_name==src_item["name"] then
+               item_max_charge=power_tools[i].max_charge       
                end
                end
-               meta:set_float("battery_charge",charge)
-               
-               if inv:is_empty("src")==false  then 
-               srcstack = inv:get_stack("src", 1)
-               src_item=srcstack:to_table()
-               if src_item["name"]== "technic:mining_drill" then
+       if item_max_charge then
                local load1=tonumber((src_item["wear"])) 
-               load1=get_RE_item_load(load1,60000)
+               load1=get_RE_item_load(load1,item_max_charge)
                load_step=1000
-               if load1<60000 and charge>0 then 
+               if load1<item_max_charge and charge>0 then 
                 if charge-load_step<0 then load_step=charge end
-                if load1+load_step>60000 then load_step=60000-load1 end
+                if load1+load_step>item_max_charge then load_step=item_max_charge-load1 end
                load1=load1+load_step
                charge=charge-load_step
-               load1=set_RE_item_load(load1,60000)
+       
+               load1=set_RE_item_load(load1,item_max_charge)
                src_item["wear"]=tostring(load1)
                inv:set_stack("src", 1, src_item)
-               end             
-               end
                end
                meta:set_float("battery_charge",charge)
-
-
-
+       end     
+       end
+       
                if inv:is_empty("dst") == false then 
                srcstack = inv:get_stack("dst", 1)
                src_item=srcstack:to_table()
index 305ef590b8a1d24dcc37757837128e6418ffdc3c..77df7e79f02fbdb9f44291885655f3bf53676ff3 100644 (file)
@@ -10,9 +10,9 @@ minetest.register_tool("technic:mining_drill", {
                local charge=tonumber((item["wear"])) 
                if charge ==0 then charge =65535 end
                charge=get_RE_item_load(charge,laser_mk1_max_charge)
-               if charge-400>0 then
+               if charge-200>0 then
                 drill_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user)
-                charge =charge-400;    
+                charge =charge-200;    
                charge=set_RE_item_load(charge,laser_mk1_max_charge)
                item["wear"]=tostring(charge)
                itemstack:replace(item)