From 4a35d5dd98c8c08dd79cd0d0789b902fd4470edf Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz <vanessaezekowitz@gmail.com> Date: Sat, 26 Oct 2013 13:14:35 +0200 Subject: [PATCH] fix typo --- technic/machines/register/battery_box.lua | 129 ++++++++++++++++++++---------------------- 1 files changed, 61 insertions(+), 68 deletions(-) diff --git a/technic/machines/register/battery_box.lua b/technic/machines/register/battery_box.lua index 6264672..a1d9b00 100644 --- a/technic/machines/register/battery_box.lua +++ b/technic/machines/register/battery_box.lua @@ -137,80 +137,73 @@ end -- End registration -function technic.charge_tools(meta, charge, charge_step) - --charge registered power tools +function technic.charge_tools(meta, batt_charge, charge_step) 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 technic.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"]) - src_meta = src_meta or {} - if src_meta["charge"] == nil then - src_meta["charge"] = 0 - end - -- Do the charging - local item_max_charge = technic.power_tools[toolname] - local tool_charge = src_meta["charge"] - if tool_charge < item_max_charge and charge > 0 then - if 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 + if inv:is_empty("src") then + return batt_charge end - return charge -- return the remaining charge in the battery + local srcstack = inv:get_stack("src", 1) + local src_meta = get_item_meta(srcstack:get_metadata()) + + local toolname = srcstack:get_name() + if not technic.power_tools[toolname] then + return batt_charge + end + -- Set meta data for the tool if it didn't do it itself + src_meta = get_item_meta(srcstack:get_metadata()) + src_meta = src_meta or {} + if not src_meta.charge then + src_meta.charge = 0 + end + -- Do the charging + local item_max_charge = technic.power_tools[toolname] + local tool_charge = src_meta.charge + if tool_charge >= item_max_charge or batt_charge <= 0 then + return batt_charge + end + charge_step = math.min(charge_step, batt_charge) + charge_step = math.min(charge_step, item_max_charge - tool_charge) + tool_charge = tool_charge + charge_step + batt_charge = batt_charge - charge_step + technic.set_RE_wear(srcstack, tool_charge, item_max_charge) + src_meta.charge = tool_charge + srcstack:set_metadata(set_item_meta(src_meta)) + inv:set_stack("src", 1, srcstack) + return batt_charge end -function technic.discharge_tools(meta, charge, charge_step, max_charge) - -- discharging registered power tools +function technic.discharge_tools(meta, batt_charge, charge_step, max_charge) 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 technic.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"]) - src_meta = src_meta or {} - if src_meta["charge"] == nil then - src_meta["charge"] = 0 - end - - -- Do the discharging - local item_max_charge = technic.power_tools[toolname] - local tool_charge = src_meta["charge"] - if tool_charge > 0 and charge < max_charge then - if 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 + if inv:is_empty("dst") then + return batt_charge end - return charge -- return the remaining charge in the battery + srcstack = inv:get_stack("dst", 1) + local toolname = srcstack:get_name() + if technic.power_tools[toolname] == nil then + return batt_charge + end + -- Set meta data for the tool if it didn't do it itself :-( + local src_meta = get_item_meta(srcstack:get_metadata()) + src_meta = src_meta or {} + if not src_meta.charge then + src_meta.charge = 0 + end + + -- Do the discharging + local item_max_charge = technic.power_tools[toolname] + local tool_charge = src_meta.charge + if tool_charge <= 0 or batt_charge >= max_charge then + return batt_charge + end + charge_step = math.min(charge_step, max_charge - batt_charge) + charge_step = math.min(charge_step, tool_charge) + tool_charge = tool_charge - charge_step + batt_charge = batt_charge + charge_step + technic.set_RE_wear(srcstack, tool_charge, item_max_charge) + src_meta.charge = tool_charge + srcstack:set_metadata(set_item_meta(src_meta)) + inv:set_stack("dst", 1, srcstack) + return batt_charge end -- Gitblit v1.8.0