From 2d7f750d9a734e2c84cc1ee14746a4ee2f8757e6 Mon Sep 17 00:00:00 2001
From: hdastwb <hdastwb@hdastwb.heliohost.org>
Date: Wed, 24 Jul 2013 03:43:36 +0200
Subject: [PATCH] fixed a condition with mv machines so as to not power down machines with stuff to grind/smelt but nothing to tube out

---
 technic/machines/mv/battery_box.lua |  109 +++++++-----------------------------------------------
 1 files changed, 14 insertions(+), 95 deletions(-)

diff --git a/technic/machines/mv/battery_box.lua b/technic/machines/mv/battery_box.lua
index e1295ce..86a1d78 100644
--- a/technic/machines/mv/battery_box.lua
+++ b/technic/machines/mv/battery_box.lua
@@ -9,16 +9,18 @@
  })
 
 local battery_box_formspec =
-   "invsize[8,9;]"..
-   "image[1,1;1,2;technic_power_meter_bg.png]"..
-   "list[current_name;src;3,1;1,1;]"..
-   "image[4,1;1,1;technic_battery_reload.png]"..
-   "list[current_name;dst;5,1;1,1;]"..
-   "label[0,0;MV_Battery box]"..
-   "label[3,0;Charge]"..
-   "label[5,0;Discharge]"..
-   "label[1,3;Power level]"..
-   "list[current_player;main;0,5;8,4;]"
+	"invsize[8,9;]"..
+	"image[1,1;1,2;technic_power_meter_bg.png]"..
+	"list[current_name;src;3,1;1,1;]"..
+	"list[current_name;dst;5,1;1,1;]"..
+	"label[0,0;MV Battery Box]"..
+	"label[3,0;Charge]"..
+	"label[5,0;Discharge]"..
+	"label[1,3;Power level]"..
+	"list[current_player;main;0,5;8,4;]"..
+	"background[-0.19,-0.25;8.4,9.75;ui_form_bg.png]"..
+	"background[0,0;8,4;ui_mv_battery_box.png]"..
+	"background[0,5;8,4;ui_main_inventory.png]"
 
 minetest.register_node(
    "technic:mv_battery_box", {
@@ -78,89 +80,6 @@
       })
 end
 
-local power_tools = technic.MV_power_tools
-
-local charge_MV_tools = function(meta, charge)
-		     --charge registered power tools
-		     local inv = meta:get_inventory()
-		     if inv:is_empty("src")==false  then
-			local srcstack = inv:get_stack("src", 1)
-			local src_item=srcstack:to_table()
-			local src_meta=get_item_meta(src_item["metadata"])
-			
-			local toolname = src_item["name"]
-			if power_tools[toolname] ~= nil then
-			   -- Set meta data for the tool if it didn't do it itself :-(
-			   src_meta=get_item_meta(src_item["metadata"])
-			   if src_meta==nil then
-			      src_meta={}
-			      src_meta["technic_mv_power_tool"]=true
-			      src_meta["charge"]=0
-			   else
-			      if src_meta["technic_mv_power_tool"]==nil then
-				 src_meta["technic_mv_power_tool"]=true
-				 src_meta["charge"]=0
-			      end
-			   end
-			   -- Do the charging
-			   local item_max_charge = power_tools[toolname]
-			   local load            = src_meta["charge"]
-			   local load_step       = 1000 -- how much to charge per tick
-			   if load<item_max_charge and charge>0 then
-			      if charge-load_step<0 then load_step=charge end
-			      if load+load_step>item_max_charge then load_step=item_max_charge-load end
-			      load=load+load_step
-			      charge=charge-load_step
-			      technic.set_RE_wear(src_item,load,item_max_charge)
-			      src_meta["charge"]   = load
-			      src_item["metadata"] = set_item_meta(src_meta)
-			      inv:set_stack("src", 1, src_item)
-			   end
-			end
-		     end
-		     return charge -- return the remaining charge in the battery
-		  end
-
-local discharge_MV_tools = function(meta, charge, max_charge)
-			-- discharging registered power tools
-			local inv = meta:get_inventory()
-			if inv:is_empty("dst") == false then
-			   srcstack = inv:get_stack("dst", 1)
-			   src_item=srcstack:to_table()
-			   local src_meta=get_item_meta(src_item["metadata"])
-			   local toolname = src_item["name"]
-			   if power_tools[toolname] ~= nil then
-			      -- Set meta data for the tool if it didn't do it itself :-(
-			      src_meta=get_item_meta(src_item["metadata"])
-			      if src_meta==nil then
-				 src_meta={}
-				 src_meta["technic_mv_power_tool"]=true
-				 src_meta["charge"]=0
-			      else
-				 if src_meta["technic_mv_power_tool"]==nil then
-				    src_meta["technic_mv_power_tool"]=true
-				    src_meta["charge"]=0
-				 end
-			      end
-			      -- Do the discharging
-			      local item_max_charge = power_tools[toolname]
-			      local load            = src_meta["charge"]
-			      local load_step       = 4000 -- how much to discharge per tick
-			      if load>0 and charge<max_charge then
-				 if charge+load_step>max_charge then load_step=max_charge-charge end
-				 if load-load_step<0 then load_step=load end
-				 load=load-load_step
-				 charge=charge+load_step
-				 technic.set_RE_wear(src_item,load,item_max_charge)
-				 src_meta["charge"]=load
-				 src_item["metadata"]=set_item_meta(src_meta)
-				 inv:set_stack("dst", 1, src_item)
-			      end
-			   end
-			end
-			return charge -- return the remaining charge in the battery
-		     end
-
 minetest.register_abm(
    {
       nodenames = {"technic:mv_battery_box","technic:mv_battery_box1","technic:mv_battery_box2","technic:mv_battery_box3","technic:mv_battery_box4",
@@ -187,8 +106,8 @@
 		end
 
 		-- Charging/discharging tools here
-		current_charge = charge_MV_tools(meta, current_charge)
-		current_charge = discharge_MV_tools(meta, current_charge, max_charge)
+		current_charge = charge_tools(meta, current_charge, 4000)
+		current_charge = discharge_tools(meta, current_charge, max_charge, 4000)
 
 		-- Set a demand (we allow batteries to charge on less than the demand though)
 		meta:set_int("MV_EU_demand", math.min(max_charge_rate, max_charge-current_charge))

--
Gitblit v1.8.0