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.powerFlow",flow)
|
||||
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))
|
||||
end
|
||||
|
||||
@ -100,7 +100,7 @@ function industrialtest.api.isPowerInput(meta,side)
|
||||
local mode=string.sub(ioConfig,side,side)
|
||||
return (mode=="i" or mode=="a")
|
||||
else
|
||||
return (ioConfig[side].direction=="i" or ioConfig[side].direction=="a")
|
||||
return (ioConfig[side].mode=="i" or ioConfig[side].mode=="a")
|
||||
end
|
||||
end
|
||||
|
||||
@ -114,7 +114,7 @@ function industrialtest.api.isPowerOutput(meta,side)
|
||||
local mode=string.sub(ioConfig,side,side)
|
||||
return (mode=="o" or mode=="a")
|
||||
else
|
||||
return (ioConfig[side].direction=="o" or ioConfig[side].direction=="a")
|
||||
return (ioConfig[side].mode=="o" or ioConfig[side].mode=="a")
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -15,81 +15,70 @@
|
||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
local S=minetest.get_translator("industrialtest")
|
||||
local transformer={}
|
||||
|
||||
transformer.onPowerFlow=function(pos,side,amount)
|
||||
local normalized=industrialtest.api.normalizeSide(pos,side)
|
||||
local def=minetest.registered_nodes[minetest.get_node(pos).name]
|
||||
if normalized~=5 and amount>def._industrialtest_lowerFlow then
|
||||
minetest.remove_node(pos)
|
||||
industrialtest.internal.explode(pos,2)
|
||||
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"
|
||||
industrialtest.Transformer=table.copy(industrialtest.ElectricMachine)
|
||||
industrialtest.internal.unpackTableInto(industrialtest.Transformer,{
|
||||
withoutFormspec=true,
|
||||
facedir=true,
|
||||
storageLists={},
|
||||
powerLists={},
|
||||
hasPowerInput=true,
|
||||
hasPowerOutput=true
|
||||
})
|
||||
|
||||
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({
|
||||
type="shaped",
|
||||
output="industrialtest:lv_transformer",
|
||||
@ -100,15 +89,27 @@ minetest.register_craft({
|
||||
}
|
||||
})
|
||||
|
||||
registerTransformer({
|
||||
name="mv_transformer",
|
||||
displayName=S("MV Transformer"),
|
||||
machineBlockTexture="industrialtest_machine_block.png",
|
||||
industrialtest.MVTransformer=table.copy(industrialtest.Transformer)
|
||||
industrialtest.internal.unpackTableInto(industrialtest.MVTransformer,{
|
||||
name="industrialtest:mv_transformer",
|
||||
description=S("MV Transformer"),
|
||||
sounds="metal",
|
||||
requiresWrench=true,
|
||||
lowerFlow=industrialtest.api.mvPowerFlow,
|
||||
upperFlow=industrialtest.api.hvPowerFlow,
|
||||
sounds="metal"
|
||||
tiles={
|
||||
"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_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({
|
||||
type="shaped",
|
||||
output="industrialtest:mv_transformer",
|
||||
@ -119,15 +120,27 @@ minetest.register_craft({
|
||||
}
|
||||
})
|
||||
|
||||
registerTransformer({
|
||||
name="hv_transformer",
|
||||
displayName=S("HV Transformer"),
|
||||
machineBlockTexture="industrialtest_machine_block.png",
|
||||
industrialtest.HVTransformer=table.copy(industrialtest.Transformer)
|
||||
industrialtest.internal.unpackTableInto(industrialtest.HVTransformer,{
|
||||
name="industrialtest:hv_transformer",
|
||||
description=S("HV Transformer"),
|
||||
sounds="metal",
|
||||
requiresWrench=true,
|
||||
lowerFlow=industrialtest.api.hvPowerFlow,
|
||||
upperFlow=industrialtest.api.evPowerFlow,
|
||||
sounds="metal"
|
||||
tiles={
|
||||
"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_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({
|
||||
type="shaped",
|
||||
output="industrialtest:hv_transformer",
|
||||
@ -138,15 +151,27 @@ minetest.register_craft({
|
||||
}
|
||||
})
|
||||
|
||||
registerTransformer({
|
||||
name="ev_transformer",
|
||||
displayName=S("EV Transformer"),
|
||||
machineBlockTexture="industrialtest_machine_block.png",
|
||||
industrialtest.EVTransformer=table.copy(industrialtest.Transformer)
|
||||
industrialtest.internal.unpackTableInto(industrialtest.EVTransformer,{
|
||||
name="industrialtest:ev_transformer",
|
||||
description=S("EV Transformer"),
|
||||
sounds="metal",
|
||||
requiresWrench=true,
|
||||
lowerFlow=industrialtest.api.evPowerFlow,
|
||||
upperFlow=industrialtest.api.ivPowerFlow,
|
||||
sounds="metal"
|
||||
tiles={
|
||||
"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_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({
|
||||
type="shaped",
|
||||
output="industrialtest:ev_transformer",
|
||||
|
Loading…
x
Reference in New Issue
Block a user