Add progress bars to the burner generator

This commit is contained in:
Valentin Anger 2018-01-07 15:04:59 +01:00
parent e2c921c158
commit fd380d743d

View File

@ -1,3 +1,7 @@
local fuel_multiplier = 2
local NAME = minetest.get_current_modname()
local formspec = local formspec =
"size[8,5.5]".. "size[8,5.5]"..
"list[current_name;fuel;0,0;1,1;]".. "list[current_name;fuel;0,0;1,1;]"..
@ -6,7 +10,28 @@ local formspec =
"bgcolor[#FC05E344;false]" .. "bgcolor[#FC05E344;false]" ..
"listcolors[#fc059db0;#fc059dd0]" "listcolors[#fc059db0;#fc059dd0]"
minetest.register_node(minetest.get_current_modname() .. ":burnergenerator", { local function update_formspec(pos)
local meta = minetest.get_meta(pos)
local inventory = meta:get_inventory()
local cfmsp = formspec
local energy = meta:get_int("energy")
local energy_max = minetest.get_item_group(minetest.get_node(pos).name, "sparktech_energy_max")
local rem_en = meta:get_int("rem_energy_")
local rem_en_or = meta:get_int("rem_energy_or_")
cfmsp = cfmsp ..
sparktech.makebar("progress2.png", 1, 0, 8.5, 0.5,
rem_en, rem_en_or, 0)
cfmsp = cfmsp ..
sparktech.makebar("energy2.png", 1, 0.5, 8.5, 0.5,
energy, energy_max, 0)
meta:set_string("formspec", cfmsp)
end
minetest.register_node(NAME .. ":burnergenerator", {
description = "Burner Generator", description = "Burner Generator",
tiles = { tiles = {
"generator2.png", "generator2.png",
@ -20,29 +45,49 @@ minetest.register_node(minetest.get_current_modname() .. ":burnergenerator", {
sparktech_techy = 1, sparktech_techy = 1,
sparktech_energy_type = 2, sparktech_energy_type = 2,
sparktech_net_trigger = 1, sparktech_net_trigger = 1,
sparktech_energy_max = 10000 sparktech_energy_max = 5000
}, },
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("formspec", formspec) meta:set_string("formspec", formspec)
meta:set_int("rem_energy_", 0)
local inv = meta:get_inventory() local inv = meta:get_inventory()
inv:set_size('fuel', 1) inv:set_size('fuel', 1)
minetest.get_node_timer(pos):start(1) minetest.get_node_timer(pos):start(0.5)
end, end,
on_timer = function(pos, elapsed) on_timer = function(pos, elapsed) -- Reduce number of ticks like in the furnace
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local rem_energy = meta:get_int("rem_energy_")
if rem_energy > 0 then
local change
if rem_energy > 5 then
change = 5
else
change = rem_energy
end
meta:set_int("rem_energy_", meta:get_int("rem_energy_") - change)
meta:set_int("energy", meta:get_int("energy") + change)
else
local inv = meta:get_inventory() local inv = meta:get_inventory()
local itemlist = inv:get_list("fuel") local itemlist = inv:get_list("fuel")
local fuel, product = minetest.get_craft_result({method = "fuel", width = 1, items = itemlist}) local fuel, product = minetest.get_craft_result({method = "fuel", width = 1, items = itemlist})
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
if fuel["time"] ~= 0 and (fuel["time"] * 10 + meta:get_int("energy") <= tonumber(minetest.get_item_group(node.name,"sparktech_energy_max"))) then if fuel["time"] ~= 0 then
inv:set_stack("fuel", 1, product["items"][1]) inv:set_stack("fuel", 1, product["items"][1])
meta:set_int("energy", meta:get_int("energy") + fuel["time"] * 10)
local fuel_energy = fuel["time"] * fuel_multiplier
meta:set_int("rem_energy_or_", fuel_energy)
meta:set_int("rem_energy_", fuel_energy)
end end
minetest.get_node_timer(pos):start(1) end
update_formspec(pos) -- Later this should only be done when a player looks into the block
minetest.get_node_timer(pos):start(0.5)
end end
}) })
minetest.register_craft({ minetest.register_craft({
output = NAME .. ":burnergenerator", output = NAME .. ":burnergenerator",
recipe = {{ 'group:steelplate', 'group:steelplate', 'group:steelplate' }, recipe = {{ 'group:steelplate', 'group:steelplate', 'group:steelplate' },