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/hv/battery_box.lua |   96 +++---------------------------------------------
 1 files changed, 6 insertions(+), 90 deletions(-)

diff --git a/technic/machines/hv/battery_box.lua b/technic/machines/hv/battery_box.lua
index 10b9e66..34e41fc 100644
--- a/technic/machines/hv/battery_box.lua
+++ b/technic/machines/hv/battery_box.lua
@@ -17,13 +17,15 @@
 	"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;HV Battery Box]"..
 	"label[3,0;Charge]"..
 	"label[5,0;Discharge]"..
 	"label[1,3;Power level]"..
-	"list[current_player;main;0,5;8,4;]"
+	"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_hv_battery_box.png]"..
+	"background[0,5;8,4;ui_main_inventory.png]"
 
 minetest.register_node("technic:hv_battery_box", {
 	description = "HV Battery Box",
@@ -84,92 +86,6 @@
 	})
 end
 
-local power_tools = technic.HV_power_tools
-
-local function charge_HV_tools(meta, charge)
-	--charge registered power tools
-	local inv = meta:get_inventory()
-	if not inv:is_empty("src") 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_hv_power_tool"] = true
-				src_meta["charge"] = 0
-			else
-				if src_meta["technic_hv_power_tool"] == nil then
-				src_meta["technic_hv_power_tool"] = true
-				src_meta["charge"] = 0
-				end
-			end
-			-- Do the charging
-			local item_max_charge = power_tools[toolname]
-			local tool_charge     = src_meta["charge"]
-			local charge_step     = 1000 -- how much to charge per tick
-			if tool_charge < item_max_charge and tool_charge > 0 then
-				if tool_charge - charge_step < 0 then
-					charge_step = charge
-				end
-				if tool_charge + charge_step > item_max_charge then
-					charge_step = item_max_charge - tool_charge
-				end
-				tool_charge = tool_charge + charge_step
-				charge = charge - charge_step
-				technic.set_RE_wear(src_item, tool_charge, item_max_charge)
-				src_meta["charge"]   = tool_charge
-				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 function discharge_HV_tools(meta, charge, max_charge)
-	-- discharging registered power tools
-	local inv = meta:get_inventory()
-	if not inv:is_empty("dst") 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"]) or {}
-			if src_meta["technic_hv_power_tool"] == nil then
-				src_meta["technic_hv_power_tool"] = true
-				src_meta["charge"] = 0
-			end
-
-			-- Do the discharging
-			local item_max_charge = power_tools[toolname]
-			local tool_charge     = src_meta["charge"]
-			local charge_step     = 4000 -- how much to discharge per tick
-			if tool_charge > 0 and charge < max_charge then
-				if tool_charge + charge_step > max_charge then
-					charge_step = max_charge - charge
-				end
-				if tool_charge - charge_step < 0 then
-					charge_step = charge
-				end
-				tool_charge = tool_charge - charge_step
-				charge = charge + charge_step
-				technic.set_RE_wear(src_item, tool_charge, item_max_charge)
-				src_meta["charge"] = tool_charge
-				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:hv_battery_box",  "technic:hv_battery_box1", "technic:hv_battery_box2",
 	             "technic:hv_battery_box3", "technic:hv_battery_box4", "technic:hv_battery_box5",
@@ -192,8 +108,8 @@
 		end
 
 		-- Charging/discharging tools here
-		current_charge = charge_HV_tools(meta, current_charge)
-		current_charge = discharge_HV_tools(meta, current_charge, max_charge)
+		current_charge = charge_tools(meta, current_charge, 16000)
+		current_charge = discharge_tools(meta, current_charge, max_charge, 16000)
 
 		-- Set a demand (we allow batteries to charge on less than the demand though)
 		meta:set_int("HV_EU_demand", math.min(max_charge_rate, max_charge-current_charge))

--
Gitblit v1.8.0