Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0bd04d3

Browse files
committedApr 13, 2013
Merge branch 'patch_#85'
Let's see if someone complains... Conflicts: mesecons_movestones/init.lua mesecons_mvps/init.lua
2 parents c08e868 + 3b38bbc commit 0bd04d3

File tree

2 files changed

+21
-34
lines changed

2 files changed

+21
-34
lines changed
 

‎mesecons_luacontroller/init.lua

+18-34
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
-- Reference
22
-- ports = get_real_portstates(pos): gets if inputs are powered from outside
33
-- newport = merge_portstates(state1, state2): just does result = state1 or state2 for every port
4-
-- action_setports(pos, ports, vports): activates/deactivates the mesecons according to the portstates (helper for action)
4+
-- action_setports(pos, rule, state): activates/deactivates the mesecons according to the portstates (helper for action)
55
-- action(pos, ports): Applies new portstates to a luacontroller at pos
66
-- lc_update(pos): updates the controller at pos by executing the code
77
-- reset_meta (pos, code, errmsg): performs a software-reset, installs new code and prints error messages
@@ -54,55 +54,39 @@ local merge_portstates = function (ports, vports)
5454
return npo
5555
end
5656

57-
local generate_name = function (ports, overwrite)
57+
local generate_name = function (ports)
5858
local overwrite = overwrite or {}
59-
local d = overwrite.d or (ports.d and 1 or 0)
60-
local c = overwrite.c or (ports.c and 1 or 0)
61-
local b = overwrite.b or (ports.b and 1 or 0)
62-
local a = overwrite.a or (ports.a and 1 or 0)
59+
local d = ports.d and 1 or 0
60+
local c = ports.c and 1 or 0
61+
local b = ports.b and 1 or 0
62+
local a = ports.a and 1 or 0
6363
return BASENAME..d..c..b..a
6464
end
6565

66-
local setport = function (pos, rule, ignore, state, ports)
67-
local ignorename = generate_name(ports, ignore)
68-
mesecon:swap_node(pos, ignorename)
66+
local setport = function (pos, rule, state)
6967
if state then
7068
mesecon:receptor_on(pos, {rule})
7169
else
7270
mesecon:receptor_off(pos, {rule})
7371
end
74-
if minetest.env:get_node(pos).name ~= ignorename then
75-
return true -- overridden by second process
76-
end
77-
return false -- success
7872
end
7973

80-
local action = function (pos, ports, forcereset)
74+
local action = function (pos, ports)
8175
local name = minetest.env:get_node(pos).name
8276
local vports = minetest.registered_nodes[name].virtual_portstates
8377
local newname = generate_name(ports)
8478

8579
if name ~= newname and vports then
8680
local rules_on = {}
8781
local rules_off = {}
88-
local ignore = {}
89-
90-
local interrupted
91-
if ports.a ~= vports.a then interrupted = setport(pos, rules.a, {a = 2}, ports.a, ports) end
92-
if interrupted and not forcereset then return end
93-
if ports.b ~= vports.b then interrupted = setport(pos, rules.b, {b = 2}, ports.b, ports) end
94-
if interrupted and not forcereset then return end
95-
if ports.c ~= vports.c then interrupted = setport(pos, rules.c, {c = 2}, ports.c, ports) end
96-
if interrupted and not forcereset then return end
97-
if ports.d ~= vports.d then interrupted = setport(pos, rules.d, {d = 2}, ports.d, ports) end
98-
if interrupted and not forcereset then return end
9982

10083
mesecon:swap_node(pos, newname)
101-
end
102-
end
10384

104-
local delayedaction = function (params)
105-
action(params.pos, params.ports)
85+
if ports.a ~= vports.a then setport(pos, rules.a, ports.a) end
86+
if ports.b ~= vports.b then setport(pos, rules.b, ports.b) end
87+
if ports.c ~= vports.c then setport(pos, rules.c, ports.c) end
88+
if ports.d ~= vports.d then setport(pos, rules.d, ports.d) end
89+
end
10690
end
10791

10892
--------------------
@@ -330,7 +314,7 @@ lc_update = function (pos, event)
330314
save_memory(meta, mem)
331315

332316
-- Actually set the ports
333-
minetest.after(0, delayedaction, {pos = pos, ports = env.port})
317+
minetest.after(0, action, pos, env.port)
334318
end
335319

336320
local reset_meta = function(pos, code, errmsg)
@@ -397,10 +381,10 @@ local digiline = {
397381
}
398382
}
399383

400-
for a = 0, 2 do -- 0 = off; 1 = on; 2 = ignore
401-
for b = 0, 2 do
402-
for c = 0, 2 do
403-
for d = 0, 2 do
384+
for a = 0, 1 do -- 0 = off; 1 = on
385+
for b = 0, 1 do
386+
for c = 0, 1 do
387+
for d = 0, 1 do
404388

405389
local cid = tostring(d)..tostring(c)..tostring(b)..tostring(a)
406390
local nodename = BASENAME..cid

‎mesecons_mvps/init.lua

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ function mesecon:mvps_get_stack(pos, dir, maximum)
5959
return nodes
6060
end
6161

62+
function mesecon:mvps_push(pos, dir, maximum) -- pos: pos of mvps; dir: direction of push; maximum: maximum nodes to be pushed
63+
local nodes = mesecon:mvps_get_stack(pos, dir, maximum)
64+
6265
function mesecon:mvps_push(pos, dir, maximum) -- pos: pos of mvps; dir: direction of push; maximum: maximum nodes to be pushed
6366
local nodes = mesecon:mvps_get_stack(pos, dir, maximum)
6467

0 commit comments

Comments
 (0)
Please sign in to comment.