From bd1766e448b149f7245c3d2db18af7ecc984f7ca Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Wed, 6 Aug 2014 22:54:17 -0400 Subject: Improve the LuaController Changes: * Stops code after a certain number of instructions. * Allows functions, due to instruction counting. * Allows loops and goto with non-JIT Lua (LuaJIT doesn't count looping as an instruction, allowing infinite loops), due to instruction counting. * Removes string matching functions as they can be slow. * Adds some safe functions. * Limits the amount of printing that can be done (to prevent console flooding). * Code cleanup. * More... --- mesecons/legacy.lua | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'mesecons') diff --git a/mesecons/legacy.lua b/mesecons/legacy.lua index c4334cf..119fa24 100644 --- a/mesecons/legacy.lua +++ b/mesecons/legacy.lua @@ -1,18 +1,13 @@ -minetest.swap_node = minetest.swap_node or function(pos, node) - local data = minetest.get_meta(pos):to_table() - minetest.add_node(pos, node) - minetest.get_meta(pos):from_table(data) -end - -local rules = {} -rules.a = {x = -1, y = 0, z = 0, name="A"} -rules.b = {x = 0, y = 0, z = 1, name="B"} -rules.c = {x = 1, y = 0, z = 0, name="C"} -rules.d = {x = 0, y = 0, z = -1, name="D"} +local rules = { + a = {x = -1, y = 0, z = 0, name="A"}, + b = {x = 0, y = 0, z = 1, name="B"}, + c = {x = 1, y = 0, z = 0, name="C"}, + d = {x = 0, y = 0, z = -1, name="D"}, +} -function legacy_update_ports(pos) +function mesecon.legacy_update_ports(pos) local meta = minetest.get_meta(pos) - L = { + local ports = { a = mesecon:is_power_on(mesecon:addPosRule(pos, rules.a), mesecon:invertRule(rules.a)) and mesecon:rules_link(mesecon:addPosRule(pos, rules.a), pos), @@ -26,7 +21,12 @@ function legacy_update_ports(pos) mesecon:invertRule(rules.d)) and mesecon:rules_link(mesecon:addPosRule(pos, rules.d), pos), } - local n = (L.a and 1 or 0) + (L.b and 2 or 0) + (L.c and 4 or 0) + (L.d and 8 or 0) + 1 + local n = + (ports.a and 1 or 0) + + (ports.b and 2 or 0) + + (ports.c and 4 or 0) + + (ports.d and 8 or 0) + 1 meta:set_int("real_portstates", n) - return L + return ports end + -- cgit v1.2.3