diff --git a/init.lua b/init.lua index 7f9696e..f6050b1 100644 --- a/init.lua +++ b/init.lua @@ -11,12 +11,12 @@ dofile(modpath .. "/internal.lua") dofile(modpath .. "/wires_common.lua") dofile(modpath .. "/wire_std.lua") -function digilines:receptor_send(pos, rules, channel, msg) +function digilines.receptor_send(pos, rules, channel, msg) local checked = {} checked[minetest.hash_node_position(pos)] = true -- exclude itself for _,rule in ipairs(rules) do - if digilines:rules_link(pos, digilines:addPosRule(pos, rule)) then - digilines:transmit(digilines:addPosRule(pos, rule), channel, msg, checked) + if digilines.rules_link(pos, digilines.addPosRule(pos, rule)) then + digilines.transmit(digilines.addPosRule(pos, rule), channel, msg, checked) end end end diff --git a/internal.lua b/internal.lua index e189130..2528f35 100644 --- a/internal.lua +++ b/internal.lua @@ -1,9 +1,9 @@ -function digilines:getspec(node) +function digilines.getspec(node) if not minetest.registered_nodes[node.name] then return false end return minetest.registered_nodes[node.name].digiline end -function digilines:importrules(spec, node) +function digilines.importrules(spec, node) if type(spec) == 'function' then return spec(node) elseif spec then @@ -13,43 +13,43 @@ function digilines:importrules(spec, node) end end -function digiline:getAnyInputRules(pos) - local node = digiline:get_node_force(pos) - local spec = digiline:getspec(node) +function digilines.getAnyInputRules(pos) + local node = digilines.get_node_force(pos) + local spec = digilines.getspec(node) if not spec then return end if spec.wire then - return digilines:importrules(spec.wire.rules, node) + return digilines.importrules(spec.wire.rules, node) end if spec.effector then - return digilines:importrules(spec.effector.rules, node) + return digilines.importrules(spec.effector.rules, node) end end -function digiline:getAnyOutputRules(pos) - local node = digiline:get_node_force(pos) - local spec = digiline:getspec(node) +function digilines.getAnyOutputRules(pos) + local node = digilines.get_node_force(pos) + local spec = digilines.getspec(node) if not spec then return end if spec.wire then - return digilines:importrules(spec.wire.rules, node) + return digilines.importrules(spec.wire.rules, node) end if spec.receptor then - return digilines:importrules(spec.receptor.rules, node) + return digilines.importrules(spec.receptor.rules, node) end end -function digilines:rules_link(output, input) - local outputrules = digilines:getAnyOutputRules(output) - local inputrules = digilines:getAnyInputRules (input) +function digilines.rules_link(output, input) + local outputrules = digilines.getAnyOutputRules(output) + local inputrules = digilines.getAnyInputRules (input) if not outputrules or not inputrules then return false end for _, orule in ipairs(outputrules) do - if digilines:cmpPos(digilines:addPosRule(output, orule), input) then + if digilines.cmpPos(digilines.addPosRule(output, orule), input) then for _, irule in ipairs(inputrules) do - if digilines:cmpPos(digilines:addPosRule(input, irule), output) then + if digilines.cmpPos(digilines.addPosRule(input, irule), output) then return true end end @@ -58,9 +58,9 @@ function digilines:rules_link(output, input) return false end -function digilines:rules_link_anydir(output, input) - return digilines:rules_link(output, input) - or digilines:rules_link(input, output) +function digilines.rules_link_anydir(output, input) + return digilines.rules_link(output, input) + or digilines.rules_link(input, output) end local function queue_new() @@ -85,14 +85,14 @@ local function queue_dequeue(queue) return object end -function digiline:transmit(pos, channel, msg, checked) - digiline:vm_begin() +function digilines.transmit(pos, channel, msg, checked) + digilines.vm_begin() local queue = queue_new() queue_enqueue(queue, pos) while not queue_empty(queue) do local curPos = queue_dequeue(queue) - local node = digiline:get_node_force(curPos) - local spec = digiline:getspec(node) + local node = digilines.get_node_force(curPos) + local spec = digilines.getspec(node) if spec then -- Effector actions --> Receive if spec.effector then @@ -101,10 +101,10 @@ function digiline:transmit(pos, channel, msg, checked) -- Cable actions --> Transmit if spec.wire then - local rules = digiline:importrules(spec.wire.rules, node) + local rules = digilines.importrules(spec.wire.rules, node) for _, rule in ipairs(rules) do - local nextPos = digiline:addPosRule(curPos, rule) - if digiline:rules_link(curPos, nextPos) then + local nextPos = digilines.addPosRule(curPos, rule) + if digilines.rules_link(curPos, nextPos) then local checkedID = minetest.hash_node_position(nextPos) if not checked[checkedID] then checked[checkedID] = true @@ -115,5 +115,5 @@ function digiline:transmit(pos, channel, msg, checked) end end end - digiline:vm_end() + digilines.vm_end() end diff --git a/inventory.lua b/inventory.lua index c926bd9..a7a1a93 100644 --- a/inventory.lua +++ b/inventory.lua @@ -2,7 +2,7 @@ local function sendMessage(pos, msg, channel) if channel == nil then channel = minetest.get_meta(pos):get_string("channel") end - digilines:receptor_send(pos,digilines.rules.default,channel,msg) + digilines.receptor_send(pos,digilines.rules.default,channel,msg) end local function maybeString(stack) diff --git a/lightsensor.lua b/lightsensor.lua index 21f66f9..fa24318 100644 --- a/lightsensor.lua +++ b/lightsensor.lua @@ -25,7 +25,7 @@ local on_digiline_receive = function (pos, node, channel, msg) local setchan = minetest.get_meta(pos):get_string("channel") if channel == setchan and msg == GET_COMMAND then local lightval = minetest.get_node_light(pos) - digilines:receptor_send(pos, digilines.rules.default, channel, lightval) + digilines.receptor_send(pos, digilines.rules.default, channel, lightval) end end diff --git a/rtc.lua b/rtc.lua index 0ad3f84..9732dd3 100644 --- a/rtc.lua +++ b/rtc.lua @@ -20,7 +20,7 @@ local on_digiline_receive = function (pos, node, channel, msg) local setchan = minetest.get_meta(pos):get_string("channel") if channel == setchan and msg == GET_COMMAND then local timeofday = minetest.get_timeofday() - digilines:receptor_send(pos, digilines.rules.default, channel, timeofday) + digilines.receptor_send(pos, digilines.rules.default, channel, timeofday) end end diff --git a/util.lua b/util.lua index bea91d3..e662e4c 100644 --- a/util.lua +++ b/util.lua @@ -1,13 +1,13 @@ -function digilines:addPosRule(p, r) +function digilines.addPosRule(p, r) return {x = p.x + r.x, y = p.y + r.y, z = p.z + r.z} end -function digilines:cmpPos(p1, p2) +function digilines.cmpPos(p1, p2) return (p1.x == p2.x and p1.y == p2.y and p1.z == p2.z) end --Rules rotation Functions: -function digilines:rotate_rules_right(rules) +function digilines.rotate_rules_right(rules) local nr={} for i, rule in ipairs(rules) do nr[i]={} @@ -18,7 +18,7 @@ function digilines:rotate_rules_right(rules) return nr end -function digilines:rotate_rules_left(rules) +function digilines.rotate_rules_left(rules) local nr={} for i, rule in ipairs(rules) do nr[i]={} @@ -29,7 +29,7 @@ function digilines:rotate_rules_left(rules) return nr end -function digilines:rotate_rules_down(rules) +function digilines.rotate_rules_down(rules) local nr={} for i, rule in ipairs(rules) do nr[i]={} @@ -40,7 +40,7 @@ function digilines:rotate_rules_down(rules) return nr end -function digilines:rotate_rules_up(rules) +function digilines.rotate_rules_up(rules) local nr={} for i, rule in ipairs(rules) do nr[i]={} @@ -51,13 +51,13 @@ function digilines:rotate_rules_up(rules) return nr end -function digilines:tablecopy(table) -- deep table copy +function digilines.tablecopy(table) -- deep table copy if type(table) ~= "table" then return table end -- no need to copy local newtable = {} for idx, item in pairs(table) do if type(item) == "table" then - newtable[idx] = digilines:tablecopy(item) + newtable[idx] = digilines.tablecopy(item) else newtable[idx] = item end @@ -88,12 +88,12 @@ local vm_cache = nil -- directly on VM-loaded arrays, which should be faster for reading many nodes -- in rapid succession. However, the cache must be flushed with vm_end once the -- scan is finished, to avoid using stale data in future. -function digiline:vm_begin() +function digilines.vm_begin() vm_cache = {} end -- Ends a bulk-VoxelManipulator operation, freeing the cached data. -function digiline:vm_end() +function digilines.vm_end() vm_cache = nil end @@ -141,7 +141,7 @@ end -- there. -- -- Inside a bulk-VoxelManipulator operation, the operation’s VM cache is used. -function digiline:get_node_force(pos) +function digilines.get_node_force(pos) if vm_cache then return vm_get_node(pos) end diff --git a/wires_common.lua b/wires_common.lua index 6806d01..8ac1d29 100644 --- a/wires_common.lua +++ b/wires_common.lua @@ -1,17 +1,17 @@ minetest.register_on_placenode(function(pos, node) if minetest.registered_nodes[node.name].digiline then - digilines:update_autoconnect(pos) + digilines.update_autoconnect(pos) end end) minetest.register_on_dignode(function(pos, node) if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].digiline then -- need to make sure that node exists (unknown nodes!) - digilines:update_autoconnect(pos) + digilines.update_autoconnect(pos) end end) -function digilines:update_autoconnect(pos, secondcall) +function digilines.update_autoconnect(pos, secondcall) local xppos = {x=pos.x+1, y=pos.y, z=pos.z} local zppos = {x=pos.x, y=pos.y, z=pos.z+1} local xmpos = {x=pos.x-1, y=pos.y, z=pos.z} @@ -26,20 +26,20 @@ function digilines:update_autoconnect(pos, secondcall) local zmypos = {x=pos.x, y=pos.y+1, z=pos.z-1} if secondcall == nil then - digilines:update_autoconnect(xppos, true) - digilines:update_autoconnect(zppos, true) - digilines:update_autoconnect(xmpos, true) - digilines:update_autoconnect(zmpos, true) + digilines.update_autoconnect(xppos, true) + digilines.update_autoconnect(zppos, true) + digilines.update_autoconnect(xmpos, true) + digilines.update_autoconnect(zmpos, true) - digilines:update_autoconnect(xpypos, true) - digilines:update_autoconnect(zpypos, true) - digilines:update_autoconnect(xmypos, true) - digilines:update_autoconnect(zmypos, true) + digilines.update_autoconnect(xpypos, true) + digilines.update_autoconnect(zpypos, true) + digilines.update_autoconnect(xmypos, true) + digilines.update_autoconnect(zmypos, true) - digilines:update_autoconnect(xpympos, true) - digilines:update_autoconnect(zpympos, true) - digilines:update_autoconnect(xmympos, true) - digilines:update_autoconnect(zmympos, true) + digilines.update_autoconnect(xpympos, true) + digilines.update_autoconnect(zpympos, true) + digilines.update_autoconnect(xmympos, true) + digilines.update_autoconnect(zmympos, true) end local def = minetest.registered_nodes[minetest.get_node(pos).name] @@ -49,20 +49,20 @@ function digilines:update_autoconnect(pos, secondcall) return nil end - local zmg = digilines:rules_link_anydir(pos, zmpos) - local zmymg = digilines:rules_link_anydir(pos, zmympos) - local xmg = digilines:rules_link_anydir(pos, xmpos) - local xmymg = digilines:rules_link_anydir(pos, xmympos) - local zpg = digilines:rules_link_anydir(pos, zppos) - local zpymg = digilines:rules_link_anydir(pos, zpympos) - local xpg = digilines:rules_link_anydir(pos, xppos) - local xpymg = digilines:rules_link_anydir(pos, xpympos) + local zmg = digilines.rules_link_anydir(pos, zmpos) + local zmymg = digilines.rules_link_anydir(pos, zmympos) + local xmg = digilines.rules_link_anydir(pos, xmpos) + local xmymg = digilines.rules_link_anydir(pos, xmympos) + local zpg = digilines.rules_link_anydir(pos, zppos) + local zpymg = digilines.rules_link_anydir(pos, zpympos) + local xpg = digilines.rules_link_anydir(pos, xppos) + local xpymg = digilines.rules_link_anydir(pos, xpympos) - local xpyg = digilines:rules_link_anydir(pos, xpypos) - local zpyg = digilines:rules_link_anydir(pos, zpypos) - local xmyg = digilines:rules_link_anydir(pos, xmypos) - local zmyg = digilines:rules_link_anydir(pos, zmypos) + local xpyg = digilines.rules_link_anydir(pos, xpypos) + local zpyg = digilines.rules_link_anydir(pos, zpypos) + local xmyg = digilines.rules_link_anydir(pos, xmypos) + local zmyg = digilines.rules_link_anydir(pos, zmypos) local zm, xm, zp, xp, xpy, zpy, xmy, zmy if zmg or zmymg then zm = 1 else zm = 0 end