From 811403c9d59aa4ba6be77199714a40baa8ef1a8c Mon Sep 17 00:00:00 2001 From: Jeija Date: Sat, 21 Jul 2012 11:06:59 +0200 Subject: [PATCH] Continue/Finish Battery --- mesecons_battery/init.lua | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/mesecons_battery/init.lua b/mesecons_battery/init.lua index 2df2255..fc559aa 100644 --- a/mesecons_battery/init.lua +++ b/mesecons_battery/init.lua @@ -64,7 +64,7 @@ end minetest.register_on_placenode(function (pos, newnode, placer) meta = minetest.env:get_meta(pos) - meta:set_int("batterstate", 0) + meta:set_int("batterystate", 1) meta:set_int("charging", 0) end) @@ -73,7 +73,8 @@ minetest.register_on_punchnode(function(pos, node, puncher) local meta = minetest.env:get_meta(pos); local batterystate = meta:get_int("batterystate") local charging = meta:get_int("charging") - minetest.env:add_node(pos, {name=string.gsub(node.name, "charging", "discharging")}) + minetest.env:remove_node(pos) + minetest.env:place_node(pos, {name=string.gsub(node.name, "charging", "discharging")}) mesecon:receptor_on(pos) meta:set_int("batterystate", batterystate) meta:set_int("charging", charging) @@ -82,7 +83,8 @@ minetest.register_on_punchnode(function(pos, node, puncher) local meta = minetest.env:get_meta(pos); local batterystate = meta:get_int("batterystate") local charging = meta:get_int("charging") - minetest.env:add_node(pos, {name=string.gsub(node.name, "discharging", "charging")}) + minetest.env:remove_node(pos) + minetest.env:place_node(pos, {name=string.gsub(node.name, "discharging", "charging")}) mesecon:receptor_off(pos) meta:set_int("batterystate", batterystate) meta:set_int("charging", charging) @@ -101,6 +103,8 @@ nodenames = {"mesecons_battery:battery_charging_1", "mesecons_battery:battery_ch local name = node.name; if batterystate < 100 then --change battery charging state batterystate = batterystate + 1 + else + node.name=string.gsub(node.name, "charging", "discharging") end if string.find(node.name, tostring(math.ceil(batterystate/20))) == nil then @@ -113,6 +117,33 @@ nodenames = {"mesecons_battery:battery_charging_1", "mesecons_battery:battery_ch end, }) +minetest.register_abm({ +nodenames = {"mesecons_battery:battery_discharging_1", "mesecons_battery:battery_discharging_2", "mesecons_battery:battery_discharging_3", "mesecons_battery:battery_discharging_4", "mesecons_battery:battery_discharging_5"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.env:get_meta(pos); + local batterystate = meta:get_int("batterystate") + local charging = meta:get_int("charging") + local name = node.name; + if batterystate > 1 then --change battery charging state + batterystate = batterystate - 1 + else + node.name=string.gsub(node.name, "discharging", "charging") + end + + print(tostring(math.ceil(batterystate/20))) + print("battstate: "..batterystate) + if string.find(node.name, tostring(math.ceil(batterystate/20))) == nil then + node.name = string.gsub(node.name, tostring(math.ceil(batterystate/20)+1), tostring(math.ceil(batterystate/20))) --change node for new nodebox model + end + minetest.env:add_node(pos, node) + meta:set_int("batterystate", batterystate) + meta:set_int("charging", charging) + end, +}) + + mesecon:register_on_signal_on(function(pos, node) if string.find(node.name, "mesecons_battery:battery") then minetest.env:get_meta(pos):set_int("charging", 1)