Refactor transformers
This commit is contained in:
parent
fd772f3c55
commit
30d5ebffe5
@ -28,7 +28,7 @@ function industrialtest.api.addPowerStorage(meta,capacity,flow,ioConfig)
|
|||||||
meta:set_int("industrialtest.powerCapacity",capacity)
|
meta:set_int("industrialtest.powerCapacity",capacity)
|
||||||
meta:set_int("industrialtest.powerFlow",flow)
|
meta:set_int("industrialtest.powerFlow",flow)
|
||||||
meta:set_int("industrialtest.powerAmount",0)
|
meta:set_int("industrialtest.powerAmount",0)
|
||||||
meta:set_int("industrialtest.extendedIoConfig",type(ioConfig)~="string")
|
meta:set_int("industrialtest.extendedIoConfig",type(ioConfig)~="string" and 1 or 0)
|
||||||
meta:set_string("industrialtest.ioConfig",type(ioConfig)=="string" and ioConfig or minetest.serialize(ioConfig))
|
meta:set_string("industrialtest.ioConfig",type(ioConfig)=="string" and ioConfig or minetest.serialize(ioConfig))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ function industrialtest.api.isPowerInput(meta,side)
|
|||||||
local mode=string.sub(ioConfig,side,side)
|
local mode=string.sub(ioConfig,side,side)
|
||||||
return (mode=="i" or mode=="a")
|
return (mode=="i" or mode=="a")
|
||||||
else
|
else
|
||||||
return (ioConfig[side].direction=="i" or ioConfig[side].direction=="a")
|
return (ioConfig[side].mode=="i" or ioConfig[side].mode=="a")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ function industrialtest.api.isPowerOutput(meta,side)
|
|||||||
local mode=string.sub(ioConfig,side,side)
|
local mode=string.sub(ioConfig,side,side)
|
||||||
return (mode=="o" or mode=="a")
|
return (mode=="o" or mode=="a")
|
||||||
else
|
else
|
||||||
return (ioConfig[side].direction=="o" or ioConfig[side].direction=="a")
|
return (ioConfig[side].mode=="o" or ioConfig[side].mode=="a")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -15,81 +15,70 @@
|
|||||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
local S=minetest.get_translator("industrialtest")
|
local S=minetest.get_translator("industrialtest")
|
||||||
local transformer={}
|
industrialtest.Transformer=table.copy(industrialtest.ElectricMachine)
|
||||||
|
industrialtest.internal.unpackTableInto(industrialtest.Transformer,{
|
||||||
transformer.onPowerFlow=function(pos,side,amount)
|
withoutFormspec=true,
|
||||||
local normalized=industrialtest.api.normalizeSide(pos,side)
|
facedir=true,
|
||||||
local def=minetest.registered_nodes[minetest.get_node(pos).name]
|
storageLists={},
|
||||||
if normalized~=5 and amount>def._industrialtest_lowerFlow then
|
powerLists={},
|
||||||
minetest.remove_node(pos)
|
hasPowerInput=true,
|
||||||
industrialtest.internal.explode(pos,2)
|
hasPowerOutput=true
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
transformer.onTimer=function(pos,elapsed,meta)
|
|
||||||
local powerAmount=meta:get_int("industrialtest.powerAmount")
|
|
||||||
local def=minetest.registered_nodes[minetest.get_node(pos).name]
|
|
||||||
local afterFlowLower=false
|
|
||||||
local afterFlowUpper=false
|
|
||||||
if powerAmount>=def._industrialtest_lowerFlow then
|
|
||||||
afterFlowLower,_=industrialtest.api.powerFlow(pos,{
|
|
||||||
[1]=true,
|
|
||||||
[2]=true,
|
|
||||||
[3]=true,
|
|
||||||
[4]=true,
|
|
||||||
[6]=true
|
|
||||||
},def._industrialtest_lowerFlow)
|
|
||||||
end
|
|
||||||
if powerAmount>=def._industrialtest_upperFlow then
|
|
||||||
afterFlowUpper,_=industrialtest.api.powerFlow(pos,{[5]=true},def._industrialtest_upperFlow)
|
|
||||||
end
|
|
||||||
return powerAmount>0 and (afterFlowLower or afterFlowUpper),false
|
|
||||||
end
|
|
||||||
|
|
||||||
local function registerTransformer(config)
|
|
||||||
industrialtest.internal.registerMachine({
|
|
||||||
name=config.name,
|
|
||||||
displayName=config.displayName,
|
|
||||||
capacity=industrialtest.api.ivPowerFlow,
|
|
||||||
flow=industrialtest.api.ivPowerFlow,
|
|
||||||
ioConfig="aaaaaa",
|
|
||||||
storageSlots={},
|
|
||||||
powerSlots={},
|
|
||||||
sounds=config.sounds,
|
|
||||||
groups={
|
|
||||||
_industrialtest_hasPowerOutput=1,
|
|
||||||
_industrialtest_hasPowerInput=1,
|
|
||||||
},
|
|
||||||
customKeys={
|
|
||||||
tiles={
|
|
||||||
config.machineBlockTexture.."^industrialtest_"..config.name.."_side.png",
|
|
||||||
config.machineBlockTexture.."^industrialtest_"..config.name.."_side.png",
|
|
||||||
config.machineBlockTexture.."^industrialtest_"..config.name.."_side.png",
|
|
||||||
config.machineBlockTexture.."^industrialtest_"..config.name.."_side.png",
|
|
||||||
config.machineBlockTexture.."^industrialtest_"..config.name.."_side.png",
|
|
||||||
config.machineBlockTexture.."^industrialtest_"..config.name.."_front.png"
|
|
||||||
},
|
|
||||||
paramtype2="facedir",
|
|
||||||
legacy_facedir_simple=true,
|
|
||||||
_industrialtest_lowerFlow=config.lowerFlow,
|
|
||||||
_industrialtest_upperFlow=config.upperFlow,
|
|
||||||
_industrialtest_onPowerFlow=transformer.onPowerFlow
|
|
||||||
},
|
|
||||||
requiresWrench=config.requiresWrench,
|
|
||||||
withoutFormspec=true,
|
|
||||||
onTimer=transformer.onTimer
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
registerTransformer({
|
|
||||||
name="lv_transformer",
|
|
||||||
displayName=S("LV Transformer"),
|
|
||||||
machineBlockTexture="industrialtest_wood_machine_block.png",
|
|
||||||
requiresWrench=false,
|
|
||||||
lowerFlow=industrialtest.api.lvPowerFlow,
|
|
||||||
upperFlow=industrialtest.api.mvPowerFlow,
|
|
||||||
sounds="wood"
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function industrialtest.Transformer.register(self)
|
||||||
|
self.ioConfig={
|
||||||
|
{
|
||||||
|
mode="a",
|
||||||
|
flow=self.lowerFlow
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode="a",
|
||||||
|
flow=self.lowerFlow
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode="a",
|
||||||
|
flow=self.lowerFlow
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode="a",
|
||||||
|
flow=self.lowerFlow
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode="a",
|
||||||
|
flow=self.flow
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode="a",
|
||||||
|
flow=self.lowerFlow
|
||||||
|
}
|
||||||
|
}
|
||||||
|
industrialtest.ElectricMachine.register(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
function industrialtest.Transformer.onPowerFlow(self,pos)
|
||||||
|
self:trigger(pos)
|
||||||
|
end
|
||||||
|
|
||||||
|
industrialtest.LVTransformer=table.copy(industrialtest.Transformer)
|
||||||
|
industrialtest.internal.unpackTableInto(industrialtest.LVTransformer,{
|
||||||
|
name="industrialtest:lv_transformer",
|
||||||
|
description=S("LV Transformer"),
|
||||||
|
sounds="wood",
|
||||||
|
tiles={
|
||||||
|
"industrialtest_wood_machine_block.png^industrialtest_lv_transformer_side.png",
|
||||||
|
"industrialtest_wood_machine_block.png^industrialtest_lv_transformer_side.png",
|
||||||
|
"industrialtest_wood_machine_block.png^industrialtest_lv_transformer_side.png",
|
||||||
|
"industrialtest_wood_machine_block.png^industrialtest_lv_transformer_side.png",
|
||||||
|
"industrialtest_wood_machine_block.png^industrialtest_lv_transformer_side.png",
|
||||||
|
"industrialtest_wood_machine_block.png^industrialtest_lv_transformer_front.png"
|
||||||
|
},
|
||||||
|
capacity=industrialtest.api.mvPowerFlow,
|
||||||
|
flow=industrialtest.api.mvPowerFlow,
|
||||||
|
lowerFlow=industrialtest.api.lvPowerFlow
|
||||||
|
})
|
||||||
|
|
||||||
|
industrialtest.LVTransformer:register()
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type="shaped",
|
type="shaped",
|
||||||
output="industrialtest:lv_transformer",
|
output="industrialtest:lv_transformer",
|
||||||
@ -100,15 +89,27 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
registerTransformer({
|
industrialtest.MVTransformer=table.copy(industrialtest.Transformer)
|
||||||
name="mv_transformer",
|
industrialtest.internal.unpackTableInto(industrialtest.MVTransformer,{
|
||||||
displayName=S("MV Transformer"),
|
name="industrialtest:mv_transformer",
|
||||||
machineBlockTexture="industrialtest_machine_block.png",
|
description=S("MV Transformer"),
|
||||||
|
sounds="metal",
|
||||||
requiresWrench=true,
|
requiresWrench=true,
|
||||||
lowerFlow=industrialtest.api.mvPowerFlow,
|
tiles={
|
||||||
upperFlow=industrialtest.api.hvPowerFlow,
|
"industrialtest_machine_block.png^industrialtest_mv_transformer_side.png",
|
||||||
sounds="metal"
|
"industrialtest_machine_block.png^industrialtest_mv_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_mv_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_mv_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_mv_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_mv_transformer_front.png"
|
||||||
|
},
|
||||||
|
capacity=industrialtest.api.hvPowerFlow,
|
||||||
|
flow=industrialtest.api.hvPowerFlow,
|
||||||
|
lowerFlow=industrialtest.api.mvPowerFlow
|
||||||
})
|
})
|
||||||
|
|
||||||
|
industrialtest.MVTransformer:register()
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type="shaped",
|
type="shaped",
|
||||||
output="industrialtest:mv_transformer",
|
output="industrialtest:mv_transformer",
|
||||||
@ -119,15 +120,27 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
registerTransformer({
|
industrialtest.HVTransformer=table.copy(industrialtest.Transformer)
|
||||||
name="hv_transformer",
|
industrialtest.internal.unpackTableInto(industrialtest.HVTransformer,{
|
||||||
displayName=S("HV Transformer"),
|
name="industrialtest:hv_transformer",
|
||||||
machineBlockTexture="industrialtest_machine_block.png",
|
description=S("HV Transformer"),
|
||||||
|
sounds="metal",
|
||||||
requiresWrench=true,
|
requiresWrench=true,
|
||||||
lowerFlow=industrialtest.api.hvPowerFlow,
|
tiles={
|
||||||
upperFlow=industrialtest.api.evPowerFlow,
|
"industrialtest_machine_block.png^industrialtest_hv_transformer_side.png",
|
||||||
sounds="metal"
|
"industrialtest_machine_block.png^industrialtest_hv_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_hv_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_hv_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_hv_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_hv_transformer_front.png"
|
||||||
|
},
|
||||||
|
capacity=industrialtest.api.evPowerFlow,
|
||||||
|
flow=industrialtest.api.evPowerFlow,
|
||||||
|
lowerFlow=industrialtest.api.hvPowerFlow
|
||||||
})
|
})
|
||||||
|
|
||||||
|
industrialtest.HVTransformer:register()
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type="shaped",
|
type="shaped",
|
||||||
output="industrialtest:hv_transformer",
|
output="industrialtest:hv_transformer",
|
||||||
@ -138,15 +151,27 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
registerTransformer({
|
industrialtest.EVTransformer=table.copy(industrialtest.Transformer)
|
||||||
name="ev_transformer",
|
industrialtest.internal.unpackTableInto(industrialtest.EVTransformer,{
|
||||||
displayName=S("EV Transformer"),
|
name="industrialtest:ev_transformer",
|
||||||
machineBlockTexture="industrialtest_machine_block.png",
|
description=S("EV Transformer"),
|
||||||
|
sounds="metal",
|
||||||
requiresWrench=true,
|
requiresWrench=true,
|
||||||
lowerFlow=industrialtest.api.evPowerFlow,
|
tiles={
|
||||||
upperFlow=industrialtest.api.ivPowerFlow,
|
"industrialtest_machine_block.png^industrialtest_ev_transformer_side.png",
|
||||||
sounds="metal"
|
"industrialtest_machine_block.png^industrialtest_ev_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_ev_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_ev_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_ev_transformer_side.png",
|
||||||
|
"industrialtest_machine_block.png^industrialtest_ev_transformer_front.png"
|
||||||
|
},
|
||||||
|
capacity=industrialtest.api.ivPowerFlow,
|
||||||
|
flow=industrialtest.api.ivPowerFlow,
|
||||||
|
lowerFlow=industrialtest.api.evPowerFlow
|
||||||
})
|
})
|
||||||
|
|
||||||
|
industrialtest.EVTransformer:register()
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type="shaped",
|
type="shaped",
|
||||||
output="industrialtest:ev_transformer",
|
output="industrialtest:ev_transformer",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user