diff options
author | Vanessa Ezekowitz <vanessaezekowitz@gmail.com> | 2016-04-01 21:00:20 -0400 |
---|---|---|
committer | Vanessa Ezekowitz <vanessaezekowitz@gmail.com> | 2016-04-01 21:10:04 -0400 |
commit | 888b0ebfec8c2eff9015163549a7e47443cb8665 (patch) | |
tree | 915080159bfaa6ba6e226087c7ce0e8d5464b518 /digilines/digilines/internal.lua | |
parent | da66780a569712c23ae4f2996cfb4608a9f9d69d (diff) | |
download | dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.gz dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.bz2 dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.xz dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.zip |
"explode" all modpacks into their individual components
(you can't have a modpack buried inside a modpack)
Diffstat (limited to 'digilines/digilines/internal.lua')
-rw-r--r-- | digilines/digilines/internal.lua | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/digilines/digilines/internal.lua b/digilines/digilines/internal.lua deleted file mode 100644 index f29cc8d..0000000 --- a/digilines/digilines/internal.lua +++ /dev/null @@ -1,92 +0,0 @@ -function digiline:getspec(node) - if not minetest.registered_nodes[node.name] then return false end - return minetest.registered_nodes[node.name].digiline -end - -function digiline:importrules(spec, node) - if type(spec) == 'function' then - return spec(node) - elseif spec then - return spec - else - return digiline.rules.default - end -end - -function digiline:getAnyInputRules(pos) - local node = minetest.get_node(pos) - local spec = digiline:getspec(node) - if not spec then return end - - if spec.wire then - return digiline:importrules(spec.wire.rules, node) - end - if spec.effector then - return digiline:importrules(spec.effector.rules, node) - end - - return rules -end - -function digiline:getAnyOutputRules(pos) - local node = minetest.get_node(pos) - local spec = digiline:getspec(node) - if not spec then return end - - if spec.wire then - return digiline:importrules(spec.wire.rules, node) - end - if spec.receptor then - return digiline:importrules(spec.receptor.rules, node) - end -end - -function digiline:rules_link(output, input) - local outputrules = digiline:getAnyOutputRules(output) - local inputrules = digiline:getAnyInputRules (input) - - if not outputrules or not inputrules then return false end - - - for _, orule in ipairs(outputrules) do - if digiline:cmpPos(digiline:addPosRule(output, orule), input) then - for _, irule in ipairs(inputrules) do - if digiline:cmpPos(digiline:addPosRule(input, irule), output) then - return true - end - end - end - end - return false -end - -function digiline:rules_link_anydir(output, input) - return digiline:rules_link(output, input) - or digiline:rules_link(input, output) -end - -function digiline:transmit(pos, channel, msg, checked) - local checkedid = tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z) - if checked[checkedid] then return end - checked[checkedid] = true - - local node = minetest.get_node(pos) - local spec = digiline:getspec(node) - if not spec then return end - - - -- Effector actions --> Receive - if spec.effector then - spec.effector.action(pos, node, channel, msg) - end - - -- Cable actions --> Transmit - if spec.wire then - local rules = digiline:importrules(spec.wire.rules, node) - for _,rule in ipairs(rules) do - if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then - digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked) - end - end - end -end |