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