diff options
Diffstat (limited to 'mesecons_extrawires')
| -rw-r--r-- | mesecons_extrawires/crossing.lua | 147 | 
1 files changed, 28 insertions, 119 deletions
| diff --git a/mesecons_extrawires/crossing.lua b/mesecons_extrawires/crossing.lua index 53f12b2..2b35af1 100644 --- a/mesecons_extrawires/crossing.lua +++ b/mesecons_extrawires/crossing.lua @@ -1,126 +1,35 @@  -- CODE NOT ACTIVE -for x=-1, 1 do for z=-1, 1 do -	rules = {} -	nodename = "mesecons_extrawires:crossing" -	if x == -1 then -		nodename = nodename .. "A" -		table.insert(rules, {x=-1, y=0, z=0}) -	end -	if z == 1 then -		nodename = nodename .. "B" -		table.insert(rules, {x=0, y=0, z=1}) -	end -	if x == 1 then -		nodename = nodename .. "C" -		table.insert(rules, {x=1, y=0, z=0}) -	end -	if z == -1 then -		nodename = nodename .. "D" -		table.insert(rules, {x=0, y=0, z=-1}) -	end -	mesecon:add_rules(nodename, rules) -	mesecon:register_effector(nodename, nodename, all_rules) -	if nodename == "mesecons_extrawires:crossing" then -		description = "Insulated Crossing" -		groups = {dig_immediate = 3, mesecon = 3, mesecon_conductor_craftable=1} -	else -		description = "You hacker you!" -		drop = "mesecons_extrawires:crossing" -		groups = {dig_immediate = 3, not_in_creative_inventory=1, mesecon = 3} -		mesecon:add_receptor_node(nodename, rules) -	end -	minetest.register_node(nodename, { -		drawtype = "nodebox", -		description = description, -		tiles = { -			"jeija_insulated_wire_sides.png", -		}, -		paramtype = "light", -		walkable = false, -		stack_max = 99, -		selection_box = { -			type = "fixed", -			fixed = { -16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001 }, -		}, -		node_box = { -			type = "fixed", -			fixed = { -				{ -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }, -				{ -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 }, -				{ -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 }, -				{ -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 }, -				{ -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 }, -				{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 }, -			}, -		}, -		groups = groups, -		drop = drop, -	}) -end end - -function receptor_set(pos, rules, on) -	if on then -		mesecon:receptor_on(pos, rules) -	else -		mesecon:receptor_off(pos, rules) -	end -end - -function update_plus(pos, name) -	vL = { -		a = string.find(name, "A")~=nil, -		b = string.find(name, "B")~=nil, -		c = string.find(name, "C")~=nil, -		d = string.find(name, "D")~=nil, -	} -	rL = yc_get_real_portstates(pos) -	L = { -		a = rL.c and not vL.c, -		b = rL.d and not vL.d, -		c = rL.a and not vL.a, -		d = rL.b and not vL.b, -	} -	newname = "mesecons_extrawires:crossing" -	if L.a then newname = newname .. "A" end -	if L.b then newname = newname .. "B" end -	if L.c then newname = newname .. "C" end -	if L.d then newname = newname .. "D" end -	if newname ~= name then -		minetest.env:add_node(pos, {name = newname}) -	end -	if L.a ~= vL.a then -		receptor_set(pos, mesecon:get_rules("mesecons_extrawires:crossingA"), L.a) -		if not L.a and yc_get_real_portstates(pos).a then -			--catch signal changing direction while on -			update_plus(pos, newname) -		end -	end -	if L.b ~= vL.b then -		receptor_set(pos, mesecon:get_rules("mesecons_extrawires:crossingB"), L.b) -		if not L.b and yc_get_real_portstates(pos).b then -			update_plus(pos, newname) -		end -	end -	if L.c ~= vL.c then -		receptor_set(pos, mesecon:get_rules("mesecons_extrawires:crossingC"), L.c) -		if not L.c and yc_get_real_portstates(pos).c then -			update_plus(pos, newname) -		end -	end -	if L.d ~= vL.d then -		receptor_set(pos, mesecon:get_rules("mesecons_extrawires:crossingD"), L.d) -		if not L.c and yc_get_real_portstates(pos).d then -			update_plus(pos, newname) -		end -	end +local crossing_get_rules = function(node) +	--TODO: calculate the real port states and use rules to link to them only if   end -mesecon:register_on_signal_change(function(pos, node) -	if string.find(node.name, "mesecons_extrawires:crossing")~=nil then -		update_plus(pos, node.name) -	end -end) +minetest.register_node("mesecons_extrawires:crossing_on", { +	drawtype = "nodebox", +	tiles = {"jeija_insulated_wire_sides.png"}, +	paramtype = "light", +	walkable = false, +	stack_max = 99, +	selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}}, +	node_box = { +		type = "fixed", +		fixed = { +			{ -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }, +			{ -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 }, +			{ -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 }, +			{ -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 }, +			{ -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 }, +			{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 }, +		}, +	}, +	groups = {dig_immediate=3, mesecon=3, mesecon_conductor_craftable=1, not_in_creative_inventory=1}, +	mesecons = { +		receptor = { +			state = mesecon.state.on, +			rules = crossing_get_rules, +		} +	}, +})  minetest.register_craft({  	type = "shapeless", | 
