-- IndustrialTest
-- Copyright (C) 2023 mrkubax10
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see .
local S=minetest.get_translator("industrialtest")
industrialtest.internal.applyUpgrade=function(pos,meta,stack)
local def=minetest.registered_items[stack:get_name()]
if def.groups._industrialtest_upgradeSpeed then
local speed=industrialtest.api.getMachineSpeed(meta)
meta:set_int("industrialtest.speed",math.min(4,speed+def.groups._industrialtest_upgradeSpeed))
elseif def.groups._industrialtest_upgradeTransformer then
local flows={
industrialtest.api.lvPowerFlow,
industrialtest.api.mvPowerFlow,
industrialtest.api.hvPowerFlow,
industrialtest.api.evPowerFlow,
industrialtest.api.ivPowerFlow
}
local machineFlow=meta:get_int("industrialtest.powerFlow")
local upgradedFlow=machineFlow
for _,flow in ipairs(flows) do
if flow>machineFlow then
upgradedFlow=flow
break
end
end
meta:set_int("industrialtest.powerFlow",upgradedFlow)
local networks=industrialtest.api.isAttachedToNetwork(meta)
if networks then
for _,network in ipairs(networks) do
industrialtest.api.createNetworkMapForNode(network)
end
end
elseif def.groups._industrialtest_upgradePowerStorage then
meta:set_int("industrialtest.powerCapacity",meta:get_int("industrialtest.powerCapacity")+10000)
local nodeDef=minetest.registered_nodes[minetest.get_node(pos).name]
if nodeDef._industrialtest_updateFormspec then
nodeDef._industrialtest_updateFormspec(pos)
end
local networks=industrialtest.api.isAttachedToNetwork(meta)
if networks then
for _,network in ipairs(networks) do
minetest.get_node_timer(network):start(industrialtest.updateDelay)
end
end
end
end
industrialtest.internal.removeUpgrade=function(pos,meta,stack)
local def=minetest.registered_items[stack:get_name()]
if def.groups._industrialtest_upgradeSpeed and meta:contains("industrialtest.speed") then
local speed=meta:get_int("industrialtest.speed")
meta:set_int("industrialtest.speed",math.max(1,speed-def.groups._industrialtest_upgradeSpeed))
elseif def.groups._industrialtest_upgradeTransformer then
local flows={
industrialtest.api.lvPowerFlow,
industrialtest.api.mvPowerFlow,
industrialtest.api.hvPowerFlow,
industrialtest.api.evPowerFlow,
industrialtest.api.ivPowerFlow
}
local machineFlow=meta:get_int("industrialtest.powerFlow")
local downgradedFlow=machineFlow
for i=#flows,1,-1 do
local flow=flows[i]
if flow