diff options
| author | Jeija <norrepli@gmail.com> | 2012-12-08 19:02:34 +0100 | 
|---|---|---|
| committer | Jeija <norrepli@gmail.com> | 2012-12-08 19:02:34 +0100 | 
| commit | 8578fd89c859162bda64af48826b7c1ae1c9e744 (patch) | |
| tree | 8e4c917dc5228f1bcf8da6234b18ea2d5b6cc4c7 | |
| parent | 472650f099deda6a3f1ab0900c7319a78b352d68 (diff) | |
| download | mesecons-8578fd89c859162bda64af48826b7c1ae1c9e744.tar mesecons-8578fd89c859162bda64af48826b7c1ae1c9e744.tar.gz mesecons-8578fd89c859162bda64af48826b7c1ae1c9e744.tar.bz2 mesecons-8578fd89c859162bda64af48826b7c1ae1c9e744.tar.xz mesecons-8578fd89c859162bda64af48826b7c1ae1c9e744.zip | |
Port lightstones (as reference for effectors) + blinky plant to the new nodedef system
| -rw-r--r-- | mesecons/internal.lua | 58 | ||||
| -rw-r--r-- | mesecons_blinkyplant/init.lua | 6 | ||||
| -rw-r--r-- | mesecons_lightstone/init.lua | 51 | 
3 files changed, 70 insertions, 45 deletions
| diff --git a/mesecons/internal.lua b/mesecons/internal.lua index c4bef7c..ce72d38 100644 --- a/mesecons/internal.lua +++ b/mesecons/internal.lua @@ -2,7 +2,7 @@  --Receptors  function mesecon:is_receptor_node(nodename) -	if minetest.registered_nodes[nodename] +	if  minetest.registered_nodes[nodename]  	and minetest.registered_nodes[nodename].mesecons  	and minetest.registered_nodes[nodename].mesecons.receptor  	and minetest.registered_nodes[nodename].mesecons.receptor.state == mesecon.state.on then @@ -43,7 +43,7 @@ function mesecon:receptor_get_rules(node)  			return rules  		end  	end -	for i, receptor in ipairs(mesecon.receptors) do --TODO +	for _, receptor in ipairs(mesecon.receptors) do --TODO  		if receptor.onstate == node.name or receptor.offstate == node.name then  			if receptor.get_rules ~= nil then  				return receptor.get_rules(node.param2) @@ -59,38 +59,38 @@ end  -- Effectors  function mesecon:is_effector_on(nodename) -	for i, effector in ipairs(mesecon.effectors) do --TODO -		if effector.onstate == nodename then -			return true -		end -	end  	if  minetest.registered_nodes[nodename]  	and minetest.registered_nodes[nodename].mesecons  	and minetest.registered_nodes[nodename].mesecons.effector  	and minetest.registered_nodes[nodename].mesecons.effector.state == mesecon.state.on then  		return true  	end -	return false -end - -function mesecon:is_effector_off(nodename)  	for i, effector in ipairs(mesecon.effectors) do --TODO -		if effector.offstate == nodename then +		if effector.onstate == nodename then  			return true  		end  	end +	return false +end + +function mesecon:is_effector_off(nodename)  	if  minetest.registered_nodes[nodename]  	and minetest.registered_nodes[nodename].mesecons  	and minetest.registered_nodes[nodename].mesecons.effector  	and minetest.registered_nodes[nodename].mesecons.effector.state == mesecon.state.off then  		return true  	end +	for i, effector in ipairs(mesecon.effectors) do --TODO +		if effector.offstate == nodename then +			return true +		end +	end  	return false  end  function mesecon:is_effector(nodename) -	if minetest.registered_nodes[nodename] -	and  minetest.registered_nodes[nodename].mesecons +	if  minetest.registered_nodes[nodename] +	and minetest.registered_nodes[nodename].mesecons  	and minetest.registered_nodes[nodename].mesecons.effector then  		return true  	end @@ -125,22 +125,40 @@ end  --Signals -function mesecon:activate(pos) --TODO +function mesecon:activate(pos)  	local node = minetest.env:get_node(pos) -	for i, action in ipairs(mesecon.actions_on) do +	if  minetest.registered_nodes[node.name] +	and minetest.registered_nodes[node.name].mesecons +	and minetest.registered_nodes[node.name].mesecons.effector +	and minetest.registered_nodes[node.name].mesecons.effector.action_on then +		minetest.registered_nodes[node.name].mesecons.effector.action_on (pos, node) +	end +	for _, action in ipairs(mesecon.actions_on) do --TODO  		action(pos, node)   	end  end  function mesecon:deactivate(pos) --TODO -	local node = minetest.env:get_node(pos)	 -	for i, action in ipairs(mesecon.actions_off) do +	local node = minetest.env:get_node(pos) +	if  minetest.registered_nodes[node.name] +	and minetest.registered_nodes[node.name].mesecons +	and minetest.registered_nodes[node.name].mesecons.effector +	and minetest.registered_nodes[node.name].mesecons.effector.action_off then +		minetest.registered_nodes[node.name].mesecons.effector.action_off(pos, node) +	end +	for _, action in ipairs(mesecon.actions_off) do  		action(pos, node)   	end  end  function mesecon:changesignal(pos) --TODO -	local node = minetest.env:get_node(pos)	 +	local node = minetest.env:get_node(pos) +	if  minetest.registered_nodes[nodename] +	and minetest.registered_nodes[nodename].mesecons +	and minetest.registered_nodes[nodename].mesecons.effector +	and minetest.registered_nodes[nodename].mesecons.effector.action_change then +		minetest.registered_nodes[nodename].mesecons.action_change(pos, node) +	end  	for i, action in ipairs(mesecon.actions_change) do  		action(pos, node)   	end @@ -221,7 +239,7 @@ function mesecon:is_conductor_off(nodename)  end  function mesecon:is_conductor(nodename) -	--TODO: simplify +	--TODO  	return mesecon:is_conductor_on(nodename) or mesecon:is_conductor_off(nodename)  end diff --git a/mesecons_blinkyplant/init.lua b/mesecons_blinkyplant/init.lua index 145467e..9571359 100644 --- a/mesecons_blinkyplant/init.lua +++ b/mesecons_blinkyplant/init.lua @@ -13,6 +13,9 @@ minetest.register_node("mesecons_blinkyplant:blinky_plant_off", {  		type = "fixed",  		fixed = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},  	}, +	mesecons = {receptor = { +		state = mesecon.state.off +	}}  })  minetest.register_node("mesecons_blinkyplant:blinky_plant_on", { @@ -30,6 +33,9 @@ minetest.register_node("mesecons_blinkyplant:blinky_plant_on", {  		type = "fixed",  		fixed = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},  	}, +	mesecons = {receptor = { +		state = mesecon.state.on +	}}  })  minetest.register_craft({ diff --git a/mesecons_lightstone/init.lua b/mesecons_lightstone/init.lua index fd8b5bf..9edd99d 100644 --- a/mesecons_lightstone/init.lua +++ b/mesecons_lightstone/init.lua @@ -1,30 +1,32 @@  function mesecon:lightstone_add(name, base_item, texture_off, texture_on) -    minetest.register_node("mesecons_lightstone:lightstone_" .. name .. "_off", { -	    tiles = {texture_off}, -	    inventory_image = minetest.inventorycube(texture_off), -	    groups = {cracky=2, mesecon_effector_off = 1, mesecon = 2}, -    	    description=name.." Lightstone", +	minetest.register_node("mesecons_lightstone:lightstone_" .. name .. "_off", { +	tiles = {texture_off}, +	inventory_image = minetest.inventorycube(texture_off), +	groups = {cracky=2, mesecon_effector_off = 1, mesecon = 2}, +	description=name.." Lightstone", +	mesecons = {effector = { +		state = mesecon.state.off, +		action_on = function (pos, node) +			minetest.env:add_node(pos, {name="mesecons_lightstone:lightstone_" .. name .. "_on"}) +			mesecon:receptor_on(pos) +		end +	}}      }) -    minetest.register_node("mesecons_lightstone:lightstone_" .. name .. "_on", { -	    tiles = {texture_on}, -	    inventory_image = minetest.inventorycube(texture_on), -	    groups = {cracky=2,not_in_creative_inventory=1, mesecon = 2}, -	    drop = "node mesecons_lightstone:lightstone_" .. name .. "_off 1", -	    light_source = LIGHT_MAX-2, -    	    description=name.." Lightstone", +	minetest.register_node("mesecons_lightstone:lightstone_" .. name .. "_on", { +	tiles = {texture_on}, +	inventory_image = minetest.inventorycube(texture_on), +	groups = {cracky=2,not_in_creative_inventory=1, mesecon = 2}, +	drop = "node mesecons_lightstone:lightstone_" .. name .. "_off 1", +	light_source = LIGHT_MAX-2, +	mesecons = {effector = { +		state = mesecon.state.on, +		action_off = function (pos, node) +			minetest.env:add_node(pos, {name="mesecons_lightstone:lightstone_" .. name .. "_off"}) +			mesecon:receptor_off(pos) +		end +	}}      }) -    assert(loadstring('mesecon:register_on_signal_on(function(pos, node) \n \ -                    if node.name == "mesecons_lightstone:lightstone_' .. name .. '_off" then \n \ -                        minetest.env:add_node(pos, {name="mesecons_lightstone:lightstone_' .. name .. '_on"}) \n \ -                        nodeupdate(pos) \n \ -                    end \n \ -                end)'))() -    assert(loadstring('mesecon:register_on_signal_off(function(pos, node) \n \ -                    if node.name == "mesecons_lightstone:lightstone_' .. name .. '_on" then \n \ -                        minetest.env:add_node(pos, {name="mesecons_lightstone:lightstone_' .. name .. '_off"}) \n \ -                        nodeupdate(pos) \n \ -                    end \n \ -                end)'))() +      minetest.register_craft({  	    output = "node mesecons_lightstone:lightstone_" .. name .. "_off 1",  	    recipe = { @@ -33,7 +35,6 @@ function mesecon:lightstone_add(name, base_item, texture_off, texture_on)  		    {'','group:mesecon_conductor_craftable',''},  	    }      }) -    mesecon:register_effector("mesecons_lightstone:lightstone_" .. name .. "_on", "mesecons_lightstone:lightstone_" .. name .. "_off")  end | 
