summaryrefslogtreecommitdiff
path: root/digilines/digilines/internal.lua
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:00:20 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:10:04 -0400
commit888b0ebfec8c2eff9015163549a7e47443cb8665 (patch)
tree915080159bfaa6ba6e226087c7ce0e8d5464b518 /digilines/digilines/internal.lua
parentda66780a569712c23ae4f2996cfb4608a9f9d69d (diff)
downloaddreambuilder_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.lua92
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