diff --git a/api/power.lua b/api/power.lua index b75387d..a46be76 100644 --- a/api/power.lua +++ b/api/power.lua @@ -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 diff --git a/machines/transformer.lua b/machines/transformer.lua index d1b8fe6..ddd205e 100644 --- a/machines/transformer.lua +++ b/machines/transformer.lua @@ -15,81 +15,70 @@ -- along with this program. If not, see . 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",