Carter Kolwey
2017-02-28 5e19514c60bd46a939beeeddde1125f137c486fb
technic/machines/register/battery_box.lua
@@ -71,13 +71,21 @@
      "label[3,0;"..S("Charge").."]"..
      "label[5,0;"..S("Discharge").."]"..
      "label[1,3;"..S("Power level").."]"..
      "list[current_player;main;0,5;8,4;]"
      "list[current_player;main;0,5;8,4;]"..
      "listring[current_name;dst]"..
      "listring[current_player;main]"..
      "listring[current_name;src]"..
      "listring[current_player;main]"
   if data.upgrade then
      formspec = formspec..
         "list[current_name;upgrade1;3.5,3;1,1;]"..
         "list[current_name;upgrade2;4.5,3;1,1;]"..
         "label[3.5,4;"..S("Upgrade Slots").."]"
         "label[3.5,4;"..S("Upgrade Slots").."]"..
         "listring[current_name;upgrade1]"..
         "listring[current_player;main]"..
         "listring[current_name;upgrade2]"..
         "listring[current_player;main]"
   end
   local run = function(pos, node)
@@ -142,8 +150,8 @@
         .."^[lowpart:"..charge_percent
         ..":technic_power_meter_fg.png]")
      local infotext = S("%s Battery Box: %d/%d"):format(tier,
            current_charge, max_charge)
      local infotext = S("@1 Battery Box: @2/@3", tier,
            technic.pretty_num(current_charge), technic.pretty_num(max_charge))
      if eu_input == 0 then
         infotext = S("%s Idle"):format(infotext)
      end
@@ -151,7 +159,8 @@
   end
   
   for i = 0, 8 do
      local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}
      local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
            technic_machine=1, ["technic_"..ltier]=1}
      if i ~= 0 then
         groups.not_in_creative_inventory = 1
      end
@@ -170,6 +179,7 @@
             "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png",
             "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png"},
         groups = groups,
         connect_sides = {"bottom"},
         tube = data.tube and tube or nil,
         paramtype2 = "facedir",
         sounds = default.node_sound_wood_defaults(),
@@ -195,6 +205,8 @@
         allow_metadata_inventory_take = technic.machine_inventory_take,
         allow_metadata_inventory_move = technic.machine_inventory_move,
         technic_run = run,
         after_place_node = data.tube and pipeworks.after_place,
         after_dig_node = technic.machine_after_dig_node
      })
   end
@@ -212,20 +224,19 @@
   if inv:is_empty("src") then
      return batt_charge, false
   end
   local srcstack = inv:get_stack("src", 1)
   local src_stack = inv:get_stack("src", 1)
   local toolname = srcstack:get_name()
   if not technic.power_tools[toolname] then
   local tool_name = src_stack:get_name()
   if not technic.power_tools[tool_name] then
      return batt_charge, false
   end
   -- Set meta data for the tool if it didn't do it itself
   src_meta = minetest.deserialize(srcstack:get_metadata())
   src_meta = src_meta or {}
   local src_meta = minetest.deserialize(src_stack:get_metadata()) or {}
   if not src_meta.charge then
      src_meta.charge = 0
   end
   -- Do the charging
   local item_max_charge = technic.power_tools[toolname]
   local item_max_charge = technic.power_tools[tool_name]
   local tool_charge     = src_meta.charge
   if tool_charge >= item_max_charge then
      return batt_charge, true
@@ -236,10 +247,10 @@
   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)
   technic.set_RE_wear(src_stack, tool_charge, item_max_charge)
   src_meta.charge = tool_charge
   srcstack:set_metadata(minetest.serialize(src_meta))
   inv:set_stack("src", 1, srcstack)
   src_stack:set_metadata(minetest.serialize(src_meta))
   inv:set_stack("src", 1, src_stack)
   return batt_charge, (tool_charge == item_max_charge)
end