Skip to content

Commit 1852e96

Browse files
author
Jeija
committedMar 21, 2014
Send changesignals for placed receptors when not powered, make on_placenode code more readable
with comments. Also fixes a bug of lua- / microcontrollers not being updated when pushed by a piston. This could cause some bugs, even though I haven't found any while testing as it is a very core part of mesecons.
1 parent a9427d2 commit 1852e96

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed
 

Diff for: ‎mesecons/init.lua

-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
-- }
4040
--}
4141

42-
4342
-- PUBLIC VARIABLES
4443
mesecon={} -- contains all functions and all global variables
4544
mesecon.queue={} -- contains the ActionQueue

Diff for: ‎mesecons/services.lua

+20-8
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
11
mesecon.on_placenode = function (pos, node)
2+
-- Receptors: Send on signal when active
23
if mesecon:is_receptor_on(node.name) then
34
mesecon:receptor_on(pos, mesecon:receptor_get_rules(node))
4-
elseif mesecon:is_powered(pos) then
5-
if mesecon:is_conductor(node.name) then
6-
-- receptor_on if itself is powered already
5+
end
6+
7+
-- Conductors: Send turnon signal when powered or replace by respective offstate conductor
8+
-- if placed conductor is an onstate one
9+
if mesecon:is_conductor(node.name) then
10+
if mesecon:is_powered(pos) then
11+
-- also call receptor_on if itself is powered already, so that neighboring
12+
-- conductors will be activated (when pushing an on-conductor with a piston)
713
mesecon:turnon (pos)
814
mesecon:receptor_on (pos, mesecon:conductor_get_rules(node))
9-
else
15+
elseif mesecon:is_conductor_off(node.name) then
16+
minetest.swap_node(pos, {name = mesecon:get_conductor_off(node)})
17+
end
18+
end
19+
20+
-- Effectors: Send changesignal and activate or deactivate
21+
if mesecon:is_effector(node.name) then
22+
if mesecon:is_powered(pos) then
1023
mesecon:changesignal(pos, node, mesecon:effector_get_rules(node), "on", 1)
1124
mesecon:activate(pos, node, nil, 1)
25+
else
26+
mesecon:changesignal(pos, node, mesecon:effector_get_rules(node), "off", 1)
27+
mesecon:deactivate(pos, node, nil, 1)
1228
end
13-
elseif mesecon:is_conductor_on(node) then
14-
minetest.swap_node(pos, {name = mesecon:get_conductor_off(node)})
15-
elseif mesecon:is_effector_on (node.name) then
16-
mesecon:deactivate(pos, node, nil, 1)
1729
end
1830
end
1931

0 commit comments

Comments
 (0)
Please sign in to comment.