Generate network map while constructing generator for testing

This commit is contained in:
2023-11-13 20:37:50 +01:00
parent c02bddb433
commit c3b49b68e1
4 changed files with 58 additions and 46 deletions

View File

@@ -61,14 +61,48 @@ end
machine.onConstruct=function(pos,config)
local meta=minetest.get_meta(pos)
local inv=meta:get_inventory()
industrialtest.api.addPowerStorage(meta,config.capacity,config.flow,config.ioConfig)
meta:set_string("formspec",machine.getFormspec(pos,config))
if config.groups and config.groups._industrialtest_hasPowerInput then
local connections=industrialtest.api.getConnections(pos)
for _,conn in ipairs(connections) do
local connectionMeta=minetest.get_meta(conn)
if industrialtest.api.isNetworkMaster(connectionMeta) then
industrialtest.api.createNetworkMapForNode(conn)
else
local def=minetest.registered_nodes[minetest.get_node(conn).name]
if def.groups._industrialtest_cable then
local networks=industrialtest.api.isAttachedToNetwork(connectionMeta)
if networks then
for _,network in ipairs(networks) do
industrialtest.api.createNetworkMapForNode(network)
minetest.get_node_timer(network):start(industrialtest.updateDelay)
end
end
end
end
end
end
if config.onConstruct then
config.onConstruct(pos,meta,inv)
end
industrialtest.api.addPowerStorage(meta,config.capacity,config.flow,config.ioConfig)
minetest.get_node_timer(pos):start(industrialtest.updateDelay)
end
machine.onDestruct=function(pos)
local meta=minetest.get_meta(pos)
local networks=industrialtest.api.isAttachedToNetwork(meta)
if networks then
for _,network in ipairs(networks) do
industrialtest.api.removeNodeFromNetwork(network,pos)
end
end
end
machine.onTimer=function(pos,elapsed,config)
local meta=minetest.get_meta(pos)
local inv=meta:get_inventory()
@@ -138,6 +172,7 @@ function industrialtest.internal.registerMachine(config)
on_construct=function(pos)
machine.onConstruct(pos,config)
end,
on_destruct=machine.onDestruct,
on_timer=function(pos,elapsed)
return machine.onTimer(pos,elapsed,config)
end,

View File

@@ -55,6 +55,7 @@ generator.onConstruct=function(pos,meta,inv)
inv:set_size("fuel",1)
meta:set_int("fuelTime",0)
meta:set_int("maxFuelTime",1)
meta:set_string("industrialtest.network",minetest.serialize(industrialtest.api.createNetworkMap(pos)))
end
generator.onTimer=function(pos,elapsed,meta,inv)