summaryrefslogtreecommitdiff
path: root/mesecons
diff options
context:
space:
mode:
authorJeija <norrepli@gmail.com>2012-09-08 15:10:31 +0200
committerJeija <norrepli@gmail.com>2012-09-08 15:10:31 +0200
commitf959c16763592c2638261ea1ba64c435cbe6c207 (patch)
tree2c518b72dca83c7f646cbbcfc952ff436bc5106f /mesecons
parent4ae7bc9aa621561c0367ed9efe1158d7fd5c69ea (diff)
downloadmesecons-f959c16763592c2638261ea1ba64c435cbe6c207.tar
mesecons-f959c16763592c2638261ea1ba64c435cbe6c207.tar.gz
mesecons-f959c16763592c2638261ea1ba64c435cbe6c207.tar.bz2
mesecons-f959c16763592c2638261ea1ba64c435cbe6c207.tar.xz
mesecons-f959c16763592c2638261ea1ba64c435cbe6c207.zip
Fix Microcontroller bug (discovered by Fenris) and some others that propably noone found
Diffstat (limited to 'mesecons')
-rw-r--r--mesecons/init.lua22
-rw-r--r--mesecons/internal.lua15
2 files changed, 10 insertions, 27 deletions
diff --git a/mesecons/init.lua b/mesecons/init.lua
index babfca4..40aa7d9 100644
--- a/mesecons/init.lua
+++ b/mesecons/init.lua
@@ -60,14 +60,13 @@ function mesecon:receptor_on(pos, rules)
end
for i, rule in ipairs(rules) do
- local np = {}
- np.x = pos.x + rule.x
- np.y = pos.y + rule.y
- np.z = pos.z + rule.z
+ local np = {
+ x = pos.x + rule.x,
+ y = pos.y + rule.y,
+ z = pos.z + rule.z}
if mesecon:rules_link(pos, np, rules) then
mesecon:turnon(np, pos)
end
- i=i+1
end
end
@@ -76,17 +75,14 @@ function mesecon:receptor_off(pos, rules)
rules = mesecon:get_rules("default")
end
- local connected = false
-
for i, rule in ipairs(rules) do
- local np = {}
- np.x = pos.x + rule.x
- np.y = pos.y + rule.y
- np.z = pos.z + rule.z
- if mesecon:rules_link(pos, np, rules) and mesecon:connected_to_pw_src(np) == false then
+ local np = {
+ x = pos.x + rule.x,
+ y = pos.y + rule.y,
+ z = pos.z + rule.z}
+ if mesecon:rules_link(pos, np, rules) and not mesecon:connected_to_pw_src(np) then
mesecon:turnoff(np, pos)
end
- i=i+1
end
end
diff --git a/mesecons/internal.lua b/mesecons/internal.lua
index 71b5172..ce43ce5 100644
--- a/mesecons/internal.lua
+++ b/mesecons/internal.lua
@@ -2,23 +2,19 @@
--Receptors
function mesecon:is_receptor_node(nodename)
- local i = 1
for i, receptor in ipairs(mesecon.receptors) do
if receptor.onstate == nodename then
return true
end
- i = i + 1
end
return false
end
function mesecon:is_receptor_node_off(nodename, pos, ownpos)
- local i = 1
for i, receptor in ipairs(mesecon.receptors) do
if receptor.offstate == nodename then
return true
end
- i = i + 1
end
return false
end
@@ -87,7 +83,6 @@ end
function mesecon:deactivate(pos)
local node = minetest.env:get_node(pos)
- local i = 1
for i, action in ipairs(mesecon.actions_off) do
action(pos, node)
end
@@ -95,7 +90,6 @@ end
function mesecon:changesignal(pos)
local node = minetest.env:get_node(pos)
- local i = 1
for i, action in ipairs(mesecon.actions_change) do
action(pos, node)
end
@@ -189,7 +183,6 @@ end
function mesecon:turnon(pos)
local node = minetest.env:get_node(pos)
- local i = 1
if mesecon:is_conductor_off(node.name) then
local rules = mesecon:conductor_get_rules(node)
@@ -215,7 +208,6 @@ end
function mesecon:turnoff(pos) --receptor rules used because output could have been dug
local node = minetest.env:get_node(pos)
- local i = 1
local rules
if mesecon:is_conductor_on(node.name) then
@@ -246,7 +238,7 @@ function mesecon:connected_to_pw_src(pos, checked)
local c = 1
if checked == nil then checked = {} end
while checked[c] ~= nil do --find out if node has already been checked (to prevent from endless loop)
- if compare_pos(checked[c], pos) then
+ if compare_pos(checked[c], pos) then
return false, checked
end
c = c + 1
@@ -265,7 +257,6 @@ function mesecon:connected_to_pw_src(pos, checked)
local connected
local rules = mesecon:conductor_get_rules(node)
- local i = 1
for i, rule in ipairs(rules) do
local np = {}
np.x = pos.x + rule.x
@@ -417,7 +408,6 @@ end
--Rules rotation Functions:
function mesecon:rotate_rules_right(rules)
- local i=1
local nr={};
for i, rule in ipairs(rules) do
nr[i]={}
@@ -429,7 +419,6 @@ function mesecon:rotate_rules_right(rules)
end
function mesecon:rotate_rules_left(rules)
- local i=1
local nr={};
for i, rule in ipairs(rules) do
nr[i]={}
@@ -441,7 +430,6 @@ function mesecon:rotate_rules_left(rules)
end
function mesecon:rotate_rules_down(rules)
- local i=1
local nr={};
for i, rule in ipairs(rules) do
nr[i]={}
@@ -453,7 +441,6 @@ function mesecon:rotate_rules_down(rules)
end
function mesecon:rotate_rules_up(rules)
- local i=1
local nr={};
for i, rule in ipairs(rules) do
nr[i]={}