started energy distrib code

This commit is contained in:
kamirama 2017-08-20 18:32:00 +02:00
parent b24f36efad
commit b9f1c6688e
2 changed files with 13 additions and 43 deletions

View File

@ -1,3 +1,8 @@
-- internal var net_master stores all slave nodes
-- sparktech_net_passive = are used to follow nets, do not count towards energy
-- sparktech_net_trigger = trigger updates
-- Updates blocks every seconds
local function compare_vec(va, vb)
if va == nil or vb == nil then
return false
@ -15,18 +20,6 @@ local function add_node_to_net(pos, master) -- stores node in master meta
slavem:set_string("net_master", "")
end
local function net_get_slaves(master)
local slaves = {}
local meta = minetest.get_meta(master)
local slave_s = meta:get_string("net_master")
local slave_s_dict = string.split(slave_s, "|")
for _, val in pairs(slave_s_dict) do
local cor = string.split(val, ":")
slaves[#slaves + 1] = {tonumber(cor[1]), tonumber(cor[2]), tonumber(cor[3])}
end
return slaves
end
local function net_build(pos, master, callerpos)
-- LOGIC to check only x sides, can be done eventually lol
-- e.g furnace only allows from below , or solar panels
@ -67,37 +60,6 @@ local function net_build(pos, master, callerpos)
return -- at this point all nodes have been processed, so we can return to the calling node
end
local function net_distribute(pos) -- function is called severall times, only run if this is a master node
-- if called for a node that does not contain netdata, rerun for the node that does.
local meta = minetest.get_meta(pos)
local net_master = meta:get_string("net_master")
if (net_master == nil) then -- if it is not set this is NOT a master node, so we can ignore it eh
return
else
-- actual distrib code
end
end
-- internal var net_master stores all slave nodes
-- sparktech_net_passive = are used to follow nets, do not count towards energy
-- sparktech_net_trigger = trigger updates
-- Updates blocks every seconds
minetest.register_abm({
nodenames = {"group:sparktech_net_trigger"},
interval = 1.0,
chance = 1,
catch_up = true,
action = function(pos, node, active_object_count, active_object_count_wider)
net_distribute(pos)
end
})
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
if minetest.get_item_group(itemstack:get_name(), "sparktech_energy_storeonbreak") > 0 then
local meta = minetest.get_meta(pos)
meta:set_int("energy", itemstack:get_metadata() or 0)
end
end)
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
if (minetest.get_item_group(itemstack:get_name(), "sparktech_net_passive") == 1 ) then
@ -106,3 +68,5 @@ minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack
net_build(pos, pos)
end
end)
-- require: when node is destroyed

6
sparkcore/util.lua Normal file
View File

@ -0,0 +1,6 @@
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
if minetest.get_item_group(itemstack:get_name(), "sparktech_energy_storeonbreak") > 0 then
local meta = minetest.get_meta(pos)
meta:set_int("energy", itemstack:get_metadata() or 0)
end
end)