Use Machine.triggerIfNeeded to request power

This commit is contained in:
2025-03-16 11:35:53 +01:00
parent 8e30412515
commit abfb829cea
2 changed files with 26 additions and 7 deletions

View File

@@ -27,7 +27,13 @@ function industrialtest.ElectricMachine.onConstruct(self,pos)
local connectionMeta=minetest.get_meta(conn)
if industrialtest.api.isNetworkMaster(connectionMeta) then
industrialtest.api.createNetworkMapForNode(conn)
minetest.get_node_timer(conn):start(industrialtest.updateDelay)
local def=minetest.get_node(conn)
if def and def._industrialtest_self then
def._industrialtest_self:requestPower(conn)
else
-- Support for bare definitions that don't use industrialtest pseudo-OOP
minetest.get_node_timer(conn):start(industrialtest.updateDelay)
end
else
local def=minetest.registered_nodes[minetest.get_node(conn).name]
if def.groups._industrialtest_cable then
@@ -35,7 +41,13 @@ function industrialtest.ElectricMachine.onConstruct(self,pos)
if networks then
for _,network in ipairs(networks) do
industrialtest.api.createNetworkMapForNode(network)
minetest.get_node_timer(network):start(industrialtest.updateDelay)
local def=minetest.get_node(network)
if def and def._industrialtest_self then
def._industrialtest_self:requestPower(network)
else
-- Support for bare definitions that don't use industrialtest pseudo-OOP
minetest.get_node_timer(conn):start(industrialtest.updateDelay)
end
end
end
end
@@ -124,10 +136,11 @@ function industrialtest.ElectricMachine.requestPower(self,pos)
if meta:get_int("industrialtest.powerAmount")<=0 then
return
end
local spaceAvailable,flowTransferred=industrialtest.api.powerFlow(pos)
if (spaceAvailable and meta:get_int("industrialtest.powerAmount")>0) or self:canUpdate(pos) then
minetest.get_node_timer(pos):start(industrialtest.updateDelay)
local _,flowTransferred=industrialtest.api.powerFlow(pos)
if flowTransferred then
self:updateFormspec(pos)
end
self:triggerIfNeeded(pos)
end
function industrialtest.ElectricMachine.powerExchange(self,pos)